这是一个登录的程序过程,我要把输入的名字和密码通过存储过程在数据库端进行判断。
使用的控件是dbexpress组件中的TSQLConnection,TSQLStoredProc两个组件,前台程序如下:
var 
  p1,p2:TParam;
   ......
with LoginStoredProc do
  begin
    StoredProcName:='loginProc';
    Params.Clear;
    p1:=TParam.Create(Params,ptInput);
    p2:=TParam.Create(Params,ptOutput);
    try
      Params[0].Name:='login_name';
      Params[1].Name:='login_password';
      //Params[2].Name:='mes';
      ParamByName('login_name').AsString:=nameEdit.Text;
      Prepared:=True;
      ExecProc;
    finally
      p1.Free;
      p2.Free;
  end;后台数据库中建的存储过程是
CREATE  PROCEDURE loginProc
   @login_name varchar(20),
   @login_password varchar(30) output
AS 
   SELECT *  FROM Login_View
   
WHERE Login_Password=@login_password and Login_Name=@login_nameGO但是程序一运行就会出现List index out of bounds(0)这个错误,这个到底是什么原因呢?

解决方案 »

  1.   

    var
    p1,p2:TParam;
    ......
    with LoginStoredProc do
    begin
    StoredProcName:='loginProc';
    Params.Clear;
    p1:=TParam.Create(Params,ptInput);
    p2:=TParam.Create(Params,ptOutput);
    try
    Params[0].Name:='login_name';
    Params[1].Name:='login_password';
    //Params[2].Name:='mes';
    ParamByName('login_name').AsString:=nameEdit.Text;
    ParamByName('login_password').AsString:=passwordEdit.Text;
    Prepared:=True;
    ExecProc;
    finally
    p1.Free;
    p2.Free;
    end;后台数据库中建的存储过程是
    CREATE PROCEDURE loginProc
    @login_name varchar(20),
    @login_password varchar(30)
    AS
    SELECT * FROM Login_ViewWHERE Login_Password=@login_password and Login_Name=@login_nameGO但是程序一运行就会出现List index out of bounds(0)这个错误,这个到底是什么原因呢?