Banco de Dados com Lazarus - CADASTRO Parte 2



Introdução

Nesta edição vamos aprender a trabalhar com os componentes de conexão com banco de dados. A partir da ligação dos componentes seremos capazes de adicionar, atualizar e remover dados em nosso banco para então trabalharmos com ferramentas que irão nos ajudar a organizar e resolver nossos problemas criando novas soluções.

Os componentes necessários 



 Para que possamos trabalhar a conexão ao nosso banco de dados vamos precisar de 4 objetos, 3 deles se encontram na palheta SQLdb e o outro na palheta Data Access. Os componentes de que estamos falando são: Mysql Connection 5, SQL Query, SQL Transaction (esses na palheta SQLdb) e o Data Source (na palheta Data Access)

A DLL de conexão

Para fazermos a conexão do Lazarus com o Mysql, precisaremos inicialmente termos uma DLL responsável pela ligação. Esta DLL é a libmysql.dll. Para continuarmos nosso projeto então, copie da pasta C:/Arquivos de Programas/HeidSQL/ o arquivo libmysql.dll e cole dentro das pastas C:/Windows/system e C:/Windows/system32/ . Tendo realizado isso é só continuar com os procedimentos de criação do nosso projeto que segue abaixo.

Criando o Banco de Dados


Para conhecermos os componentes vamos criar um banco de dados onde iremos cadastrar nomes de alunos com códigos automáticos. A tabela do banco de dados abaixo:

Criando o programa

O objetivo deste nosso programa é adicionar nomes de alunos no nosso banco de dados, para isso precisaremos então preparar nosso Form. Siga a imagem abaixo para ver a disposição dos objetos no Form e logo depois veja as propriedades que deverão ser alteradas seguindo a numeração disposta em cada objeto. Ao criar o seu projeto lembre-se de salvá-lo seguindo os procedimentos ensinados anteriormente nas outras edições.














Agora altere as propriedades referentes a cada objeto, para tudo seguir corretamente, altere primeiro as propriedades Name de cada objeto e depois siga alterando as outras propriedades:
1. Label
a. Caption à Nome:

2. Edit
a. Text à deixar em branco
b. Name à edt_nome

3. Button
a. Caption à Cadastrar

4. SQL Connection
a. Name à conecta
b. DatabaseName à escola
c. HostName à 127.0.0.1
d. UserName à root
e. Password à A senha que você definiu na instalação do Appserv
f. Connected à True

5. SQL Query
a. Name à query
b. Database à conecta
c. Transaction à trans

6. SQL Transaction
a. Name à trans
b. Database à conecta

7. Data Source
a. Name à source
b. Dataset à query

8. DBGrid ( Palheta Data Control)
a. Name à grid
b. DataSource àsource

9. Form
a. Caption à Cadastro de Alunos




 Codificando nosso projeto
Para que o sistema funcione então precisamos agora incluir alguns comandos de programação no nosso projeto. Primeiro vamos inserir uma pequena linha de programação no evento FormCreate que irá fazer a ligação do nosso DB Grid com o banco de dados para que possamos visualizar os dados que serão cadastrados.

Programação do Form 

 

Para isso clique duas vezes no formulário para ir para a tela de edição de código diretamente no evento FormCreate. Veja os comandos digitados e digite-os em seu projeto.
ATENÇÃO: PARA EVITAR PROBLEMAS EM NOSSO PROJETO, DIGITE O CÓDIGO QUE VOCÊ VERÁ EM NOSSO MATERIAL, POIS CASO OS COMANDOS SEJAM COPIADOS E COLADOS NO LAZARUS, ELES PODEM CONTER FORMATAÇÕES QUE SERÃO VISTAS COMO ERRO NO PROGRAMA NA HORA DA DEPURAÇÃO.



Nesta programação estamos dizendo ao programa que no instante em que for criado o Form (Evento FormCreate) o programa incluir na nossa query uma sintaxe SQL “SELECT * FROM alunos ORDER BY codigo” que faz uma pesquisa no banco de dados por todos os dados da tabela alunos e ordena o resultado pelo código. Na segunda linha ele faz executar o script anterior através da função Open da query.
Este código fará com que os dados que tivermos no nosso banco sejam mostrados no DB Grid do nosso form , tudo isso devido a ligação entre o Data Source a Query e o DB Grid.

 

Programação do Button “Cadastrar”


Para fazer a parte de cadastro vamos precisar codificar o botão de Cadastrar, para isso volte ao form e dê dois cliques no botão Cadastrar para irmos à janela de edição de código no evento Click do nosso Button. Após isso digite o código que verá na imagem abaixo:


No código do botão a primeira coisa que fazemos é criar uma variável do tipo STRING que irá armazenar o script SQL de inclusão dos dados( a criação da variável você observa na linha em que adicionamos entre a Procedure e o Begin um comando Var e logo abaixo colocamos sql:string; )
Depois do Begin o que se vê é o script SQL de inclusão sendo adicionado na variável SQL. O script de inclusão possui dentro dele a parte onde iremos pegar o valor que será digitado dentro da caixa de texto. Esta parte você pode reparar quando vemos o código depois do VALUES ( “ ‘ + edt_nome.text + ‘ “); .
O código digitado na propriedade text deve ser escrito entre aspas simples, mas no SQL precisamos identificar um dado do tipo string entre aspas por isso digitamos primeiro as aspas duplas dentro dos parênteses do VALUES, pois se usarmos as aspas simples significa que estamos encerrando a instrução do text. Porem precisamos adicionar o conteúdo que será digitado dentro da caixa de texto e para fazer isso não podemos estar entre as aspas simples, então fechamos as aspas simples depois das duplas dizendo ao programa que iremos encerrar o texto da propriedade text, mas adicionamos logo depois o + que irá fazer com que algo seja juntado/concatenado ao conteúdo. Então adicionamos depois do sinal de + o nome da nossa caixa de texto e sua propriedade text que irá pegar o valor que for digitado dentro da caixa.
Para encerrar o script SQL usamos então outro + e depois abrimos as aspas simples de novo e continuamos como se estivéssemos no mesmo texto de antes, assim encerrando a instrução
SQL. Dessa forma quando o computador executar ele verá como se tudo fosse um texto só substituindo o conteúdo da caixa entre os sinais de + que nós inserimos.
Veja um exemplo de como o computador iria ler esta linha de código se fosse digitado o nome João dentro da caixa de texto:
Na programação à ‘INSERT INTO alunos (nome) VALUES (" '+edt_nome.Text+' ");’
Quando Executado à INSERT INTO alunos (nome) VALUES ("João");
Observe que quando executado é como se o programa retirasse as aspas simples e substituísse o conteúdo da caixa de texto no meio das aspas duplas.
Continuando a explicação das outras linhas, logo em seguida do scrip SQL temos a função Close sendo usada na query. Ela irá encerrar qualquer conexão que foi realizada anteriormente para que uma nova instrução seja executada.
Então adicionamos a sentença que estava na variável sql dentro da query usando a linha query.SQL.text := sql .
Para executar a sentença de inclusão adicionada na query através da linha anterior explicada, usamos a função ExecSQL da query e depois disso usamos o mesmo script que foi digitado no FormCreate para que seja atualizada a pesquisa no banco e o nosso DBGrid seja atualizado exibindo agora o item que será incluído.
Esta programação fará com que, quando o usuário digitar algo na caixa de texto e clicar em Cadastrar, o texto digitado dentro do edit seja adicionado no nosso banco de dados. Podemos ver que não cadastramos o código porque na hora de criar o banco definimos este campo como auto incremento, assim sendo, toda vez que for adicionado um novo nome na tabela o código é gerado automaticamente pelo banco de dados.
Dessa forma depois de digitado esta programação você pode executar seu projeto e ver que já temos um programa de inclusão no banco de dados.

1 comentários:

  1. Unknown disse...:

    Olá, gostei do seu exemplo e gostaria de contribuir. Fiz o teste com sqlite3 e funcionou perfeitamente.

    procedure TForm1.Button1Click(Sender: TObject);
    var sql:string;
    begin
    sql:='insert into alunos(nome) values ("'+ed_nome.Text+'");';
    query.Close;
    query.SQL.Text:=sql;
    query.ExecSQL;

    trans.CommitRetaining; // adicionado

    query.SQL.Text:='select * from alunos order by codigo';
    query.Open;
    ed_nome.Text:=''; //adicionado
    ed_nome.SetFocus //adicionado
    end;