Você está aqui: Delphi ::: dbExpress ::: TSQLMonitor |
Entenda e aprenda a usar a classe TSQLMonitor em suas aplicações Delphi + dbExpressQuantidade de visualizações: 11496 vezes |
Um objeto da classe TSQLMonitor permite interceptar as mensagens que são trocadas entre um componente de conexão SQL (TSQLConnection) e um servidor de banco de dados e salvá-las em uma lista de strings. Veja sua posição na hierarquia de classes do Delphi:System.TObject Classes.TPersistent Classes.TComponent SqlExpr.TSQLMonitor Usamos um componente TSQLMonitor quando queremos depurar (debug) a comunicação entre nossas aplicações e um servidor de banco de dados. Cada instância da classe TSQLMonitor registra (log) os comandos SQL de um determinado componente de conexão SQL, e os adiciona a uma lista de strings (string list). Isso não só nos permite verificar os comandos que disparamos explicitamente a um dataset SQL ou componente de conexão SQL mas também ver quaisquer comandos disparados nos bastidores, tais como aqueles gerados por um componente dataset provider. A lista de comandos já registrados pode ser visualizada por meio da propriedade TraceList. Esta propriedade é atualizada automaticamente quando o componente de conexão passa uma mensagem para o servidor de banco de dados. Siga os passos abaixo para aprender a conectar um controle TSQLMonitor a um componente TSQLConnection e registrar em um TMemo as mensagens trocadas com o servidor de banco de dados: a) Vá na aba dbExpress e arraste um controle TSQLMonitor para o formulário ou data module; b) Ajuste a propriedade SQLConnection do TSQLMonitor para o controle TSQLConnection desejado; c) Ajuste a propriedade Active do TSQLMonitor para True; d) Coloque o código abaixo no evento OnLogTrace do SQLMonitor (pode ser necessário acrescentar a unit DBXCommon na sua lista de uses): procedure TForm3.SQLMonitor1LogTrace(Sender: TObject; TraceInfo: TDBXTraceInfo); begin // vamos transferir para um TMemo as mensagens trocadas // entre o SQLConnection e o banco de dados Neste trecho de código eu direcionei o log das mensagens para um TMemo. Note que fiz uma conversão forçada (cast) para o tipo TStrings afim de evitar o erro: Incompatible types: 'TStrings' and 'TWideStrings' Veja parte do conteúdo das mensagens registradas pelo SQLMonitor: select * from `livros` MySQL - mysql_real_query MySQL - mysql_field_count MySQL - mysql_store_result MySQL - mysql_fetch_field MySQL - mysql_escape_string MySQL - mysql_escape_string SELECT TABLE_SCHEMA, CAST(NULL AS CHAR(1)), TABLE_NAME, INDEX_NAME, CASE WHEN NON_UNIQUE = 0 THEN INDEX_NAME ELSE NULL END, INDEX_NAME='PRIMARY', NON_UNIQUE=0, 1=1 FROM INFORMATION_SCHEMA.STATISTICS WHERE (TABLE_SCHEMA = 'estudos' OR (1=2)) AND (1=1 OR 1=2) AND (TABLE_NAME = 'livros' OR (1=2)) GROUP BY 1, 2, 3 ,4 ORDER BY 1, 2, 3, 4 MySQL - mysql_real_query MySQL - mysql_field_count MySQL - mysql_store_result MySQL - mysql_fetch_field MySQL - mysql_fetch_row MySQL - mysql_fetch_lengths MySQL - mysql_escape_string MySQL - mysql_escape_string MySQL - mysql_escape_string SELECT TABLE_SCHEMA, CAST(NULL AS CHAR(1)), TABLE_NAME, INDEX_NAME, COLUMN_NAME, SEQ_IN_INDEX, COLLATION='A' FROM INFORMATION_SCHEMA.STATISTICS WHERE (TABLE_SCHEMA = 'estudos' OR (1=2)) AND (1=1 OR 1=2) AND (TABLE_NAME = 'livros' OR (1=2)) AND (INDEX_NAME = 'A' OR (1=1)) ORDER BY 1, 2, 3, 4, SEQ_IN_INDEX MySQL - mysql_real_query MySQL - mysql_field_count MySQL - mysql_store_result MySQL - mysql_fetch_field MySQL - mysql_fetch_row MySQL - mysql_fetch_lengths MySQL - mysql_fetch_row MySQL - mysql_free_result select * from `livros` MySQL - mysql_real_query MySQL - mysql_field_count MySQL - mysql_store_result MySQL - mysql_fetch_field MySQL - mysql_fetch_row MySQL - mysql_fetch_lengths Esta dica foi escrita e testada no Delphi 2009. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
VB.NET - Como comparar strings em VB.NET usando o método Equals() da classe String do .NET Framework AutoCAD Civil 3D - Como criar pontos COGO no AutoCAD Civil 3D |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |