将 TSQLMonitor 与使用新 ODBC dbExpress 驱动程序的 TSQLConnection 一起使用是不是有技巧?

Posted

技术标签:

【中文标题】将 TSQLMonitor 与使用新 ODBC dbExpress 驱动程序的 TSQLConnection 一起使用是不是有技巧?【英文标题】:Is there a trick for using TSQLMonitor with a TSQLConnection that uses the new ODBC dbExpress driver?将 TSQLMonitor 与使用新 ODBC dbExpress 驱动程序的 TSQLConnection 一起使用是否有技巧? 【发布时间】:2012-02-13 13:33:47 【问题描述】:

我一直在测试 Delphi XE2 附带的新 ODBC dbExpress 驱动程序,并注意到 TSQLMonitor 似乎无法正常工作。考虑到我可能错误地配置了组件,我将一个 TSQLMonitor 连接到一个使用 MS SQL dbExpress 驱动程序的 TSQLConnection,这就像一个魅力。

我在网上没有看到任何关于这个问题的帖子。有没有其他人注意到这个问题?这似乎是一个错误、一个不受支持的功能(没有监控使用 ODBC 驱动程序的 TSQLConnection),还是在这种情况下配置 TSQLMonitor 有技巧?

【问题讨论】:

您是否尝试过使用 Tracing 派生驱动程序?这会增加 SQLMonitor 结果,最终可能会很有用。如果 ODBC 驱动程序是一个完全原生的驱动程序(我认为),它可能与“旧”的基于 Dll 的驱动程序不同...... Marco:这是一个很好的建议。将 TSQLConnection 连接到 ODBC 驱动程序后,然后展开 TSQLConnection 的 Driver 属性,我将驱动程序的 DelegateConnection 属性设置为 DBXTrace。然后我扩展了 DelegateConnection 属性并将 TraceFile 设置为 True 并将 TraceFile 设置为文件名(全部根据您的建议)。感谢您提供此解决方法。我仍然想看看是否有人知道如何解决 TSQLMonitor 问题。 @Marco Cantù:有点话题,但请你考虑一下post? 我确定您知道这些链接,但以防万一我将它们发布在这里。 :) Tutorial: Using TSQLMonitor with an ODBC Connection Debugging dbExpress Applications using TSQLMonitor @Mike,你的评论听起来像是一个答案;) 【参考方案1】:

试试这个:

procedure TForm2.Button1Click(Sender: TObject);
begin
  try
    Connect;
    SQLMonitor1.SQLConnection := SQLConnection1;
    SQLMonitor1.Active := True;
    ExecuteQueries;
    SQLMonitor1.SaveToFile('D:\\Log.txt');
  except
    on E: Exception do
      ShowMessage('Exception ocurred!: ' + E.Message);
  end;
end;

procedure TForm2.Connect;
begin
  SQLConnection1 := TSQLConnection.Create(nil);
  SQLConnection1.ConnectionName := 'odbcinterbaseconnection';
  SQLConnection1.LoginPrompt := False;
  SQLConnection1.LoadParamsOnConnect := True;
  SQLConnection1.Connected := True;
end;

procedure TForm2.ExecuteQueries;
var
  Query: String;
begin
  try
    if SQLConnection1.Connected then
    begin
      Query := 'CREATE TABLE ExampleTable(id INTEGER, name VARCHAR(50))';
      SQLConnection1.Execute(Query, nil);
      Query := 'INSERT INTO ExampleTable VALUES(1,''test1'')';
      SQLConnection1.Execute(Query, nil);
      Query := 'INSERT INTO ExampleTable VALUES(2,''test2'')';
      SQLConnection1.Execute(Query, nil);
      Query := 'INSERT INTO ExampleTable VALUES(3,''test3'')';
      SQLConnection1.Execute(Query, nil);
      Query := 'SELECT * FROM ExampleTable';
      SQLConnection1.Execute(Query, nil);
    end;
  except
    on E: Exception do
      ShowMessage('Exception ocurred!: ' + E.Message);
  end;
end;

【讨论】:

以上是关于将 TSQLMonitor 与使用新 ODBC dbExpress 驱动程序的 TSQLConnection 一起使用是不是有技巧?的主要内容,如果未能解决你的问题,请参考以下文章

将节点 odbc 与 Microsoft Access 一起使用

如何将 Core Data 与 ODBC 数据源一起使用?

如何使用ODBC数据连接连接到本地SQL Server? (我得到“登录失败”)

SQL Server与SQL Server Native Client的ODBC驱动程序

将 MySQL 3.23 与 pyodbc 3.07 连接

将 Snowflake ODBC 驱动程序与 MS Access 一起使用