我写了一个程序,使用BDE来连接数据库,用TDataBase和Query,我建了个DataModel,把TDataBase放在DataModel上,设置如下:在Databse Editor中设置为:
DATABASE NAME=123;SERVER NAME=123;USER NAME=123;PASSWORD=123
AliasName=123;DatabaseName=123;
在TDM.Database1Login事件中写到,LoginParams.Values['USER NAME']:='123';
LoginParams.Values['PASSWORD']:='123';
在工程文件代码中如下:
  Application.CreateForm(TDM, DM);
  LonginForm:=TLonginForm.Create(APPLICATION);
  LonginForm.ShowModal;
  IF LonginForm.ModalResult=6 THEN
  BEGIN
    Application.Initialize;
    Application.CreateForm(TMainForm, MainForm);
  Application.Run;
  END;
在TLonginForm的FormCreate的事件代码如下:
MyList := TStringList.Create;
try
  with MyList do
  begin
    Add('SERVER NAME='+SERVER_NAME);
    Add('USER NAME='+DATABASE_USER);
    Add('DATABASE NAME='+DATABASE_NAME);
    Add('PASSWORD='+PASSWORD);
    Add('SQLPASSTHRU MODE=NOT SHARED');
  end;  with DM.Database1 do
  begin
    Session.Active:=false;
    Session.Close;
    Session.DeleteAlias('hydb'); //删除数据库别名
    Session.AddAlias('hydb', 'SYBASE', MyList);//增加数据库别名
    Session.SaveConfigFile;    {BDE配置文件存盘}    LoginPrompt:=False;
    Session.Open;
    Session.Active:=true;    Connected:=False;
    Close;
    DatabaseName:='hydb';
    AliasName:=DATABASE_NAME;
    Params.Clear;
    Params.Add('DATABASE NAME='+DATABASE_NAME);
    Params.Add('SERVER NAME='+SERVER_NAME);
    Params.Add('USER NAME='+DATABASE_USER);
    //Params.Add('HOST NAME'+HOST_NAME);
    Params.Add('PASSWORD='+PASSWORD);
    LoginPrompt:=False;
    Open;
    Connected:=true;
end;
finally
  MyList.Free;
end;
其中变量为:var SERVER_NAME,DATABASE_NAME,DATABASE_USER:string;
ODBC_DSN,PASSWORD,HOST_NAME:string;
MSGwuhanIni: TIniFile;
MyList: TStringList;
以上的参数是动态改变的,是根据配置文件取数的。
当程序运行到TLonginForm的FormCreate的事件时报错,我跟踪了一下,当程序运行到Open时出错,错误是(Project MainPro.exe raised exception class EDBEngineError with message with message'General SQL error.Login failed.
ct_connect():protocol specific layer:external error:The attempt to connect to the server failed.
Alias:hydb'.Process stoped.Use Step or Run to continue.)
以上是我的问题。请各位大侠帮帮忙,谢谢!

解决方案 »

  1.   

    open去掉,运行程序在看看bdeadmin里面有没有你刚建立的
      

  2.   

    不行还是报错,我用的是Sybase数据库,会不会有特别的方法?
      

  3.   

    用BDE和ADO后 除了一些SQL语句有差别外,其他的基本都是一样的方法
      

  4.   

    我要做的是动态配置参数,登陆数据库,使用Tdatabase,是为了能通过动态的配置参数登陆数据库,和不要显示他的英文登陆界面,但我在以上的设置中无法登陆数据库,错误提示是‘(Project MainPro.exe raised exception class EDBEngineError with message with message'General SQL error.Login failed.
    ct_connect():protocol specific layer:external error:The attempt to connect to the server failed.
    Alias:hydb'.Process stoped.Use Step or Run to continue.)’,我不知道还有什么参数我没有配置的,导致登陆失败。