0

実行時にBDEを介してInterbaseDBに接続しようとしています。私はこれをフォームレスプロジェクトで実行しようとしています(コンソールアプリではありません)。エイリアスは既知です。レジストリからエイリアスを取得します。例: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

シェーン、エイリアスしか知らないデータベースからパスワードを取得できれば、データベースのすべてのセキュリティは無意味になります。したがって、答えは「いいえ」です。BDEエイリアスを知っているだけでこの情報を取得することはできません。パスワード保護を使用してデータベースに接続する方法は、ユーザーとパスワードを最終ユーザーに要求するか、この情報を暗号化された構成ファイルに保存することです。

于 2011-02-02T02:13:49.600 に答える