Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Delphi ::: dbExpress ::: TSQLMonitor

Entenda e aprenda a usar a classe TSQLMonitor em suas aplicações Delphi + dbExpress

Quantidade de visualizações: 11076 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
Esta classe também implementa as interfaces Classes.IInterfaceComponentReference e System.IInterface.

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
......


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
É importante observar que o SQLMonitor usa a propriedade TraceCallbackEvent do componente SQL connection cujas mensagens o mesmo monitora. Se atribuirmos nossa própria chamada callback a esta propriedade, a instância do SQL monitor interromperá seu funcionamento.

Esta dica foi escrita e testada no Delphi 2009.

Link para compartilhar na Internet ou com seus amigos:

Python ::: Fundamentos da Linguagem ::: Estruturas de Controle

Apostila Python para iniciantes - Como exibir os números pares de 0 a 20 usando o laço for da linguagem Python

Quantidade de visualizações: 13170 vezes
Nesta dica mostrarei como podemos usar o laço for da linguagem Python para exibir os números pares de 0 a 20. Note que usaremos os parâmetros start (valor inicial da variável de controle), stop (valor final da variável de controle, não incluído) e step (que especifica o valor de incremento da variável de controle.

Veja o código completo para o exemplo:

# função principal do programa
def main():
  for i in range(0, 21, 2):
    print(i, end = "  ")
......


Ao executar este código nós teremos o seguinte resultado:

0 2 4 6 8 10 12 14 16 18 20


Node.js ::: Dicas & Truques ::: Arquivos e Diretórios

Como obter o diretório de instalação do Node.js - O diretório de trabalho do Node.js

Quantidade de visualizações: 1772 vezes
Em algumas situações nós gostaríamos de obter o diretório de instalação, ou diretório de trabalho do Node.js. Isso pode ser feito por meio da variável __dirname ou da função cwd() do objeto process. Tanto a variável quanto a função process.cwd() fazem parte do core do Node.js e não precisam ser importados.

Veja abaixo um exemplo de um aplicação funcional que mostra o nome do diretório de trabalho:

// importamos o módulo HTTP
var http = require("http");
  
http.createServer(function(request, response){
  // Aqui nós enviamos o cabeçalho HTTP, com a resposta
  // 200 (OK) e o content type text/plain
  response.writeHead(200, {'Content-Type': 'text/plain'});
      
  // Vamos obter e mostrar o diretório de trabalho do Node.js
  var diretorio = __dirname;
......


Depois de executar o servidor, abra seu navegador no endereço http://127.0.0.1:8081 e você terá o seguinte resultado:

O diretório de trabalho é: c:\estudos_nodejs


C# ::: Windows Forms ::: Formulários e Janelas

Como maximizar um formulário Windows Forms ao clicar em um botão usando a linguagem C#

Quantidade de visualizações: 13025 vezes
Em algumas situações gostaríamos de maximizar um formulário Windows Forms baseado em alguma ação do usuário. Isso pode ser feito definindo-se a constante FormWindowState.Maximized para a propriedade WindowState da classe Form.

O trecho de código abaixo mostra como maximizar o formulário ao clicarmos em um botão:

private void button1_Click(object sender, EventArgs e){
  // vamos maximizar o formulário
......



C# ::: Windows Forms ::: CheckBox

Como marcar ou desmarcar todas as CheckBox de um formulário C# Windows Forms de uma só vez via código

Quantidade de visualizações: 16404 vezes
Em algumas situações temos formulários com muitos controles CheckBox C# Windows Forms e gostaríamos de marcá-los ou desmarcá-los de uma só vez. Esta dica mostra como isso pode ser feito.

Para simular este exemplo, coloque vários controles CheckBox no formulário e coloque o código abaixo no evento Click de um botão:

private void button1_Click(object sender, EventArgs e){
  // vamos percorrer todos os controles do formulário
  for(int i = 0; i < this.Controls.Count; i++){
    // vamos testar se o controle é do tipo CheckBox
......


Se quiser desmarcar todas as CheckBoxes, troque a linha:

(this.Controls[i] as CheckBox).Checked = true;

por

(this.Controls[i] as CheckBox).Checked = false;


jQuery ::: Dicas & Truques ::: Manipulação e Conteúdo Dinâmico

Como usar o método appendTo() do jQuery para adicionar todo o conteúdo de um elemento ao final de outro elemento HTML

Quantidade de visualizações: 225 vezes
O método appendTo() é usado quando queremos adicionar todo o conteúdo dos elementos retornados sob uma determinada condição a outro ou outros elementos HTML.

Veja um trecho de código no qual adicionamos o conteúdo de um parágrafo ao final de um elemento DIV:

<script type="text/javascript">
<!--
  function adicionarConteudo(){
    var texto = "<br>Mais uma linha.";
......


O método appendTo() opera em todos os elementos HTML retornados sob uma determinação condição. O retorno do método é um objeto jQuery que pode ser usado para fins de encadeamento de chamadas de métodos.


Veja mais Dicas e truques de jQuery

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 12 usuários muito felizes estudando em nosso site.