Olá, amigos da Active Delphi! Nesse meu segundo artigo como colunista do site, abordarei um assunto muito procurado pela maioria dos leitores que trabalha com SQL Server, como eu. Vou explicar como criar uma aplicação simples usando a engine ADO para conexão com o SQL Server, usando os conceitos de arquivos ini para salvar alguns parâmetros e usá-los na nossa aplicação.
Estudando as necessidades da nossa aplicação
Nossa aplicação conterá um arquivo ini chamado Config,
onde conterá dois parâmetros: DATABASE e SERVIDOR. O parâmetro
servidor vai guardar o nome do servidor SQL ou endereço IP, e o parâmetro
database vai guarda o nome do banco de dados.
Conhecendo sobre arquivo ini no Windows
Arquivos .INI são uma boa maneira de salvarmos as configurações
de uma aplicação para que, quando tal aplicação
for executada novamente, estas configurações sejam restauradas.
Os arquivos .INI são arquivos de texto comuns, que podem ser visualizados
e editados no Bloco de Notas do Windows ou em qualquer outro editor de texto.
Contudo, essa extensão de arquivo tem algumas exigências quanto
ao seu layout e uma restrita quantidade de tipos de dados disponíveis.
Seu layout é dividido em blocos ou seções cujos nomes
são colocados entre colchetes ([ ]) e cada seção pode
conter vários atributos que podem ser apenas dos tipos string, integer
ou boolean.
O Delphi dispõe para os desenvolvedores uma classe pronta para trabalhar
com estes arquivos: TIniFile. Ao criarmos um objeto para esta classe, a ligamos
a um arquivo que este estará disponível para leitura e escrita
de dados. A classe possui três métodos de leitura e três
para a escrita, que são: ReadString, ReadInteger, ReadBool e WriteString,
WriteInteger, WriteBool, respectivamente. Existem ainda outros métodos
que definem valores padrão de leitura para os arquivos .INI e que
permitem que uma seção inteira seja lida ou apagada de uma única
vez.
Nota: No exemplo, tenho um banco de dados chamado Omega e
uma tabela chamada TbGrupo. Não entrarei em detalhes sobre a criação
dos mesmos, mais segue abaixo o script que pode ser usado para a criação
do banco.
CREATE DATABASE OMEGA -- criando o banco de dados
ON
PRIMARY (NAME=OMEGA_data,
FILENAME = 'c:\MSSQL7\DATA\OMEGA.mdf', -- diretório onde vais ser salvo o mdf
SIZE = 10MB,
MAXSIZE = 15MB,
FILEGROWTH = 25%)
LOG ON
(NAME = OMEGA_log,
FILENAME = 'c:\MSSQL7\DATA\ OMEGA.ldf', -- diretório onde vais ser salvo o ldf
SIZE = 4MB, -- tamanho do Banco
MAXSIZE = 6MB,
FILEGROWTH = 2MB)
CREATE TABLE TBGRUPO
(
COD_GRP int not NULL,
NOMGRP varchar(15) NULL
)
insert into TBGRUPO (COD_GRP, NOMGRP) values (1,'Active');
insert into TBGRUPO (COD_GRP, NOMGRP) values (2,'Delphi');
insert into TBGRUPO (COD_GRP, NOMGRP) values (3,'Sergio');
Criando a aplicação Delphi
Crie uma nova aplicação no Menu File / New / Application. Adicione
os seguintes componentes:
2 Panel;
4 Label;
1 DataSource
1 DBGrid
Deixe o form com o mostrado na figura abaixo:

Figura 1 - Janela principal da aplicação.
Ainda trabalhando com este form, altere as seguintes propriedades:
Name = FrmMenu
Position = poDesktopCenter
Fazendo a conexão com o SQL Server
Vamos usar para realizar a conexão com o banco SQL Server, os componentes
da paleta ADO:

Figura 2 - palheta de componentes ADO
Adicione no form mais dois componentes: um ADOConnection e um ADOQuery. O
primeiro é o responsável por se conectar com
o Banco de Dados. Para configura-lo, clique na propriedade ConnectionString
e
na tela
seguinte, escolha a opção Build.

Figura 3 - Criando a String de Conexão
Na lista de Drivers, escolha Microsoft ole DB Provider for SQL Server, e clique
em avançar. Preencha os campos como segue abaixo:

Figura 4 - Propriedades da Conexão
Opção 1 - Servidor - Como nosso servidor
não é remoto, colocaremos (Local), indicando que esse
e um servidor local.
Opção 2 - Logon - Informamos que vamos
usar contas de usuário do próprio SQL Server, como no exemplo:
sa.
Opção 3 - Usuários - Na lista de banco
de Dados, escolheremos um banco qualquer somente para ilustrar o exemplo.
Obs: Você pode usar
o banco activedelphi criado no meu primeiro artigo aqui no site, sobre controle
de usuários e tentativa. Importante lembrar que as opções
Senha em Branco e Permitir Salvamento de Senhas devem ficar
marcadas.
Clique no botão Testar Conexão para verificar se está tudo
configurado corretamente. Se estiver, vamos receber a seguinte mensagem: "Teste
de Conexão Realizado com Sucesso".
Clique em OK até voltar ao form.
Volte para as propriedades do ADOConnection e coloque:
LoginPrompt = false
Name = ADOConn.
Altere também no ADOQuery, as propriedades:
Name = qryLstGrupo
SQL = select * from tbgrupo:
Nota: Não podemos esquecer de ligar o dsGrupo ao qryLstGrupo e o DBGrid
ao dsGrupo.
Se ativarmos a query (propriedade active = true), já estaremos conectados
ao SQL Server.
Declarando as Procedures:
Vamos declarar duas procedures na seção private do nosso Form.
private
Procedure AdoConecta; // Conecta o AdoConnection e o ADOQuery.
Procedure AdoDesconecta; // Desconectar o AdoConnection e o ADOQuery.
Para criar o corpo das procedures use CTRL+ SHIFT+C, e as implemente:
procedure TFrmMenu.AdoConecta;
begin
ADOConn.Connected:= true;
qryLstGrupo.Open;
end;
procedure TFrmMenu.AdoDesconecta;
begin
qryLstGrupo.close;
ADOConn.Connected:= False;
end;
No evento onCreate do Form, declare uma variável chamada arqini do
tipo TiniFile. Não se esqueça de declarar na seção
uses do form a unit iniFiles.
O que vamos usar para fazer a conexão via arquivo ini?
Clique no ADOConn e recorte o que estiver na propriedade ConnectionString
deixando ela em branc. Usaremos ela mais tarde.
Conteúdo do ConnectionString
Provider=SQLOLEDB.1;Password="";Persist
Security Info=True;User ID=sa; Initial Catalog=Omega; Data Source=(Local);Use
Procedure for Prepare=1;Auto
Translate=True;Packet Size=4096;Workstation ID=SERGIO;Use Encryption for Data=False;Tag
with column collation when possible=False
Explicando as propriedades mais importantes do ConnectionString:
ID=sa; - Usuario padrão do sql server (sa).
Password=""; - Senha do Usuário.
Initial Catalog=Omega; - Nome do banco de Dados.
Data Source=(Local); - Nome do Servidor Sql.
Vamos usar dinamicamente duas dessas propriedades, que são Initial
Catalog e Data Source. Ambas serão lidas do arquivo Config.ini.
Lendo o conteúdo das chaves do arquivo ini.
Para o parâmetro Initial Catalog=Omega, façamos:
...Initial Catalog='+ArqInI.ReadString('conexao','DATABASE','')+'...
Para Data Source=(Local), façamos:
...Data Source= '+ ArqInI.ReadString('conexao','SERVIDOR','')+'…
‘conexao’ é o nome da seção que
possui as duas chaves:
DATABASE, que é onde se encontra o nome do banco no ini e
SERVIDOR, que é o nome do Servidor SQL.
Nota: Observe que depois do nome da chave encontra-se um par de apóstrofes
(‘’). Este é o valor padrão, que será usado
caso a chave não possa ler lida por algum motivo. No exemplo, o valor
padrão é nulo, mas poderíamos utilizar ‘(Local)’ como
valor padrão.
Configurando a aplicação no Evento OnCreate
procedure TFrmMenu.FormCreate(Sender: TObject);
var
arqini : TIniFile;
begin
// Verifica se o Config está na pasta do Executável.
arqini := TIniFile.Create(ExtractFilePath(Application.ExeName )+'Config.ini');
// A propriedade ConnectionString do ADoConn recebe os dados da Conexão.
// Clique no ADoConn e apage o que estiver na sua propriedade ConnectionString
AdoConn.ConnectionString := 'Provider=SQLOLEDB.1;Password="";'+
'Persist Security Info=True; User ID=sa; Initial Catalog='+
ArqInI.ReadString('conexao','DATABASE','')+';Data Source= '+
ArqInI.ReadString('conexao','Data Source','')+'; Use Procedure for Prepare=1;'+
'Auto Translate=True;Packet Size=4096;Workstation ID=SERGIO;'+
'Use Encryption for Data=False;Tag with column collation when possible=False';
// Chama a procure Conecta.
AdoConecta;
// Tira a variável do arquivo ini da memória.
arqini.Free;
End;
Veja também, o conteúdo do nosso arquivo Config.ini:
[conexao]
***************************************************************************
* *
* Nessa seção detalha-se o nome do servidor e do banco de dados *
* Servidor: Nome ou IP do Servidor SQL. *
* Database: Nome do Banco de Dados SQL. *
* *
***************************************************************************
SERVIDOR=(Local)
DATABASE=OMEGA;
Você pode compilar a aplicação e verificar se está tudo
funcionando corretamente. Se não estiver, revise os passos acima e se
precisar, poderá baixar o exemplo na seção de downloads
ou no link disponível ao final do artigo.
Resumo
Apresentei nesse artigo como trabalhar com sua aplicação em
rede, com MSQL. No próximo artigo, vamos aprender como criar um instalador
para a nossa aplicação. Até lá.
Agradecimentos
Primeiramente, agradeço a Deus, e aos amigos do site Active Delphi
pelo apoio que me deram (Kelver e Marcelo). Queria convidar aos visitantes
do site que não freqüentam o nosso fórum a acessar e participar.
Tenho muito orgulho em fazer parte desse grande site. Participe! É grátis
e o cadastro é bem simples!
Qual o foco dos meus artigos?
Estou procurando explicar de maneira fácil, algumas das dúvidas
que todos os programadores iniciantes enfrentam quando estão criando
seus primeiros projetos.
E se eu tiver Duvidas?
Para dúvidas, críticas ou sugestões, entrem em contato comigo pelo e-mail
abaixo, que na medida do possível responderei.
Sérgio de Castro Guedes
Analista da Mais Sistemas Inteligentes,
Atualmente trabalha com MSQL, MySQL, FireBird.
Contato: sergio_rj45@yahoo.com.br
Clique aqui para fazer o download do exemplo.
|