我写了一个程序,使用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.)
以上是我的问题。请各位大侠帮帮忙,谢谢!
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.)
以上是我的问题。请各位大侠帮帮忙,谢谢!
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.)’,我不知道还有什么参数我没有配置的,导致登陆失败。