Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a trick for using TSQLMonitor with a TSQLConnection that uses the new ODBC dbExpress driver?

I have been testing the new ODBC dbExpress driver that ships with Delphi XE2, and have noticed that the TSQLMonitor does not seem to work. Thinking that I may have configured the component incorrectly, I hooked up a TSQLMonitor to a TSQLConnection that uses the MS SQL dbExpress driver, and that worked like a charm.

I don't see any posts about this problem on the Web. Has anyone else noticed this issue? Does it appear to be a bug, an unsupported feature (no monitoring on a TSQLConnection that uses the ODBC driver), or is there a trick to configuring the TSQLMonitor under this condition?

like image 702
Cary Jensen Avatar asked Jan 18 '12 20:01

Cary Jensen


1 Answers

Try this out:

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; 
like image 71
alesc3 Avatar answered Oct 15 '22 05:10

alesc3