Páginas

domingo, 15 de maio de 2011

Lazarus - Acessando banco de dados com SQLdb - Parte III

Muita coisa mudou no Lazarus desde que começamos a dedicar este blog à divulgação deste poderoso IDE. Quando iniciamos usávamos a versão 0.9.28 e publicamos dois artigos voltados para o uso do conjunto de componentes SQLdb:

Lazarus - Acessando banco de dados com SQLdb - Parte I
Lazarus - Acessando banco de dados com SQLdb - Parte II

Hoje estamos com a versão 0.9.31. Neste post iremos apresentar algumas mudanças para melhor na utilização desses componentes.

Referências aos campos de uma tabela - criação de TFields

Para criar os TFields ainda é necessário que a TSQLQuery esteja ativa. Dê um duplo clique na TSQLQuery e você verá uma janela como esta:

Esta janela oferece uma barra de ferramentas bastante intuitiva. O botão adicionar irá abrir uma nova janela onde você poderá selecionar os campos da tabela que se deseja adicionar. Após selecionar os campos pressione o botão Create. O botão novo campo permite criar um campo de dado, calculado ou lookup. O uso desse botão irá abrir a seguinte janela:
Aqui você escolhe o tipo do campo em Field Type. Em Field properties podemos definir os valores das propriedades do campo. Depois confirme tudo pressionando Ok. Esteja sempre atento que as tabelas envolvidas na criação dos campos devem estar abertas.
Note também que esse procedimento irá criar variáveis do tipo TField, que podem ser usadas no código do nosso programa. Essas variáveis são criadas abaixo do Data Module conforme podemos ver na figura:

A partir disso, podemos acessar os campos da tabela usando essas variáveis, lembrando que elas são objetos. Veja alguns exemplos de utilização desses objetos:

queCidadeidcidade.Value;  // lê o valor do campo, inteiro nesse caso
queCidadeidcidade.AsString;  // lê o valor do campo convertido para string

Criação de TFields não é uma novidade. Isso já existia nas versões anteriores. Apenas ficou um pouco mais intuitivo e fácil manipular a criação desses objetos.

Referência aos parâmetros de um comando SQL

Como sabemos, é possível escrever comandos SQL utilizando parâmetros. Um exemplo é mostrado no código abaixo:

procedure TfrmConsCidade.btnPesquisarClick(Sender: TObject);
begin
  with dmDados.queConsCidade do
  begin
    Close;
    SQL.Clear;
    if (rgCampo.ItemIndex = 0) then
    begin
      // pidcidade é um parâmetro
      SQL.Add('select * from cidade where idcidade = :pidcidade');
      // atribuição do valor do parâmetro
      ParamByName('pidcidade').Value := StrToInt(edValor.Text);
      //Params[0].Value := StrToInt(edValor.Text);
    end
    else
    begin
      SQL.Add('select * from cidade where nome like :pnome');
      ParamByName('pnome').Value := edValor.Text + '%';
    end;
    Open;
  end;
end;

Em versões anteriores não havia o método ParamByName(). O acesso a um parâmetro era feito usando Params[]. Isso é mostrado na linha de código 13, que aparece comentada. O uso de ParamByName() torna o código mais legível.
O SQLdb melhorou muito, mas ainda aconselhamos o uso de ZeosLib.

8 comentários:

Anônimo disse...

Bom dia Professor,

no Delphi existe a opção de arrastar o campo do edit fields para o formulário, não consegui fazer isso na versão 9.30, agora será possivel?

obrigado

Professor Carlos disse...

Bom dia

Ainda não existe essa funcionalidade. Nem mesma na versão 0.9.31

Paulo Jorge disse...

Excelente artigo! Parabéns!

Professor Carlos disse...

Valeu Paulo
Obrigado pelo comentário.

Yindi disse...

Boa tarde professor,

O Zeos Acess nao suporta fazer conexao com o SQLite ?

Professor Carlos disse...

A resposta é sim. Na propriedade Protocol de ZConnection coloque sqlite-3 e informe o caminho e o nome do arquivo do banco na propriedade Database.

Humberto Santos disse...

Prezado Professor Carlos,

Gostaria de saber se ainda serão realizadas atualizações gerais sobre Lazarus, sou estudante de TI e me interessei muito por lazarus, conforme indicado adquiri o Livro da AgBook - Desenvolvendo Aplicativos com Lazarus, muito interessante, porém creio que tenhas muito mais a somar no aprendizado dinâmico e compartilhado em seu Blog, meu parabéns pela iniciativa e no aguardo de novidades e mais e mais conhecimento.

Atenciosamente,

Humberto Santos

Professor Carlos disse...

Sim Humberto, além do último release no sourceforge, aqui http://www.hu.freepascal.org/lazarus/ você tem snapshots diários que você pode experimentar.

 
Creative Commons License
This work by Carlos Alberto P. Araújo is licensed under a Creative Commons Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Brasil License.