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