如何获取DBExpress TSqlConnection实际连接到的数据库的名称?

时间:2015-11-26 12:40:41

标签: delphi firebird dbexpress delphi-6

我正在测试一个相当旧的Delphi 6应用程序,并希望显示TSqlConnection实际连接的数据库名称,因此我可以快速查看是否已连接到测试或生产数据库。< / p>

在sqlconnections.ini中,该应用程序有一个名为&#39; Vienna&#39;到这样定义的Firebird数据库: Database = 192.168.1.15:ProductionDB(它是别名) 并且我已将其替换为测试目的 数据库= 192.168.1.15:TESTDB

但是我已经看到只是访问TSqlConnection的Params-List并且那里有数据库&#39;数据库&#39;不起作用。此值始终设置为与设计模式中的值相同。

如何找出TSqlConnection实际连接到哪个数据库(在我的情况下是哪个Firebird别名)?

2 个答案:

答案 0 :(得分:1)

监控表引入了FB 2.1.x: - )

所以试试

 select MON$DATABASE_NAME from MON$DATABASE

或尝试

 select MON$ATTACHMENT_NAME from MON$ATTACHMENTS
    where MON$ATTACHMENT_ID = CURRENT_CONNECTION

的信息

答案 1 :(得分:0)

SQLConnection.Params属性为空Params.Values['Database']时,即使触发BeforeConnectAfterConnect事件,也会返回空字符串。

您可以使用TSQLConnection.OnLogin事件。 例如:

procedure TForm11.SQLConnection1Login(Database: TSQLConnection;
  LoginParams: TWideStrings);
var
 i : integer;
begin
  //Show all params
  for I := 0 to LoginParams.Count - 1 do
    ShowMessage(LoginParams[i]);

  // Show database
  ShowMessage(LoginParams.Values['Database']);   
end;
  

使用OnLogin事件为User_Name,Password和分配值   TSQLConnection尝试之前的数据库参数   连接到数据库服务器。只有LoginPrompt才会出现OnLogin   财产是真的。如果LoginPrompt为true但没有OnLogin事件   处理程序,出现一个默认登录对话框,用户可以在其中输入   用户名和密码。如果正确的值,则连接失败   用户名和密码不在对话框中提供或由   OnLogin事件处理程序。

Source