Есть ли хитрость для использования TSQLMonitor с TSQLConnection, который использует новый драйвер ODBC dbExpress?

38

Я тестировал новый драйвер dbExpress ODBC, который поставляется с Delphi XE2, и заметил, что TSQLMonitor не работает. Думая, что я, возможно, неправильно настроил компонент, я подключил TSQLMonitor к TSQLConnection, который использует драйвер MS SQL dbExpress, и это работало как шарм.

Я не вижу сообщений об этой проблеме в Интернете. Кто-нибудь еще заметил эту проблему? Является ли это ошибкой, неподдерживаемой функцией (нет мониторинга в TSQLConnection, использующем драйвер ODBC), или есть ли трюк для настройки TSQLMonitor при этом условии?

  • 0
    Вы пытались использовать драйвер, полученный из Tracing? Это добавляет к результатам SQLMonitor и может оказаться полезным. Если драйвер ODBC является полностью собственным драйвером (как я думаю), он может работать не так, как "старые" драйверы на основе Dll ....
  • 1
    Марко: Это отличное предложение. После подключения TSQLConnection к драйверу ODBC и последующего расширения свойства Driver TSQLConnection я установил для свойства DelegateConnection драйвера значение DBXTrace. Затем я расширил свойство DelegateConnection и установил для TraceFile значение True, а для TraceFile - имя файла (все согласно вашим рекомендациям). Спасибо за этот обходной путь. Я все еще хочу посмотреть, знает ли кто-нибудь, как решить проблему TSQLMonitor.
Показать ещё 3 комментария
Теги:
tsql
delphi-xe2
dbexpress

1 ответ

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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню