0

我正在尝试通过 BDE 在运行时连接到 Interbase DB。我正在尝试在无形项目(但不是控制台应用程序)中执行此操作。别名是已知的。我从注册表中检索别名。示例: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 获取所有连接信息并建立连接?我宁愿不要硬编码用户名和密码,以防客户将来更改它们。

4

1 回答 1

6

Shane,如果您只知道别名就可以从数据库中获取密码,那么数据库的所有安全性都将毫无意义。所以答案是否定的,您无法仅知道 BDE 别名来检索此信息。使用密码保护连接到数据库的方法是向最终用户请求用户和密码,或者将此信息存储在加密的配置文件中。

于 2011-02-02T02:13:49.600 回答