我正在尝试通过BDE在运行时连接到Interbase数据库。我试图在一个无形的项目(但不是一个控制台应用程序)中这样做。别名是已知的。我从注册表中检索别名。示例:MyAlias。
//create alias params list
AParams:= TStringList.Create;
//create a session to get alias parameters
ASession:= TSession.Create(nil);
ASession.SessionName := 'MainSession';
try
ASession.GetAliasParams(tmpAlias, AParams);
finally
ASession.Free;
end;
//connect to database
dbMain:= TDatabase.Create(nil);
with dbMain do
begin
//AliasName:= 'MyAlias';
DatabaseName:= 'test';
LoginPrompt:= False;
Params.Assign(AParams);
try
Connected:=True;
if Connected then ShowMessage('Connected!') else ShowMessage('Failed to Connect!');
finally
Free;
end; //try
end;//with
//free alias params list
AParams.Free;
无论如何,它看起来不像Session.GetParams实际上获取密码。我如何获得密码?如果我知道别名,有没有办法从BDE获取所有连接信息并建立连接?如果客户端将来更改用户名和密码,我宁愿不对其进行硬编码。
答案 0 :(得分:6)
Shane,如果你只知道别名就能从数据库中获取密码,那么数据库的所有安全性都是毫无意义的。 所以答案是否,只有知道BDE别名才能检索此信息。使用密码保护连接数据库的方法是向最终用户请求用户和密码,或将此信息存储在加密配置文件中。