我正在测试一个相当旧的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别名)?
答案 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']
时,即使触发BeforeConnect
或AfterConnect
事件,也会返回空字符串。
您可以使用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事件处理程序。