Você está aqui: Delphi ::: dbExpress ::: TSQLMonitor |
|
Entenda e aprenda a usar a classe TSQLMonitor em suas aplicações Delphi + dbExpressQuantidade 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 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 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 PythonQuantidade 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.jsQuantidade 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ódigoQuantidade 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 HTMLQuantidade 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 |
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.
|
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 |