Você está na página 1de 32

junho

2013

junho

2013

04

Editorial

05

FIREDAC
Autor: Luciano Pimenta

10

C#

16

Android

Desenvolva uma Aplicao Desktop em C# e MySQL


Parte 2

Gerenciadores de
Banco de Dados SQLite

Autor: Joo Marcos Sakalauska

Autor: Marcos C. Silva

20

TValueListEditor
Criando e Manipulando dados

ndice

Autor: Lucas Vieira de Oliveira

28

Dicas The Club


junho

2013

03

Editorial
Ol amigos!
Chegamos sexta edio da revista The Club deste ano de 2013, sempre
com a finalidade de suprir todas as necessidades de nossos associados com
dicas e artigos atualizados no mundo da programao. Graas aos senhores,
ao longo destes ltimos anos, conseguimos produzir uma revista com um
contedo mais ecltico podendo atingir desenvolvedores .Net, Delphi e
Android. Neste ms nosso colunista Joo Marcos Sakalauska d continuidade ao artigo sobre aplicaes Desktop em C# junto com o banco de dados
MySQL,. Nesta segunda parte aborda o uso do driver de conexo MySQL
Connector junto com o Microsoft Visual Studio. J nosso consultor tcnico Jferson Silva de Lima nos preparou um artigo com um assunto abordado em nosso suporte tcnico, o uso do componente TValueListEditor,
servindo de base para todas as verses do Delphi. Neste artigo ele cria e
manipula arquivos do tipo .ini com recursos deste componente. Luciano
Pimenta nos apresenta em primeira mo a nova tecnologia de acesso a
dados, o FireDAC, estando disponvel para usurios do Delphi XE3 e XE4.
Esta tecnologia veio para substituir o DBExpress, ressaltando que o mesmo
ainda ser suportado, apenas no ser atualizado. Eu continuo trabalhando
com o sistema Android, sendo que nesta publicao trago informaes e
tutoriais explicando o uso de aplicativos para gerenciadores de Banco de
dados SQLite, um recurso para ser utilizado junto com o dispositivo mvel,
auxiliando na manipulao e organizao dos dados.
No deixem de ler nossa seo de Dicas, sempre com um contedo rpido
e prtico para ajud-los.
Um grande abrao e at o ms que vem!

Av. Prof Celso Ferreira da Silva, 190


Jd. Europa - Avar - SP - CEP 18.707-150
Informaes e Suporte: (14) 3732-1529

Internet

http://www.theclub.com.br
Cadastro: cadastro@theclub.com.br
Suporte: suporte@theclub.com.br
Informaes: info@theclub.com.br
Skype Cadastro: theclub_cadastro
Skype Suporte: theclub_linha1
theclub_linha2
theclub_linha3

www.twitter.com/theclubbr

Copyright The Club 2013


Diretor Tcnico
Marcos Csar Silva
Diagramao
Vitor M. Rodrigues
Design
Vitor M. Rodrigues
Reviso
Drielly Cristini Patrinhani
Colunistas
Joo Marcos Sakalauska
Jos Antonio P. M. de Paula
Lucas de Oliveira
Luciano Pimenta
Thiago Cavalheiro Montebugnoli
Juninho
Jeferson Silva de Lima
Impresso e acabamento:

GRIL - Grfica e Editora


Taquarituba-SP - Tel. (14) 3762-1345
Reproduo

Thiago Montebugnoli - Editor Chefe


thiago@theclub.com.br

04

junho

2013

A utilizao, reproduo, apropriao, armazenamento em banco


de dados, sob qualquer forma ou meio, de textos, fotos e outras
criaes intelectuais em cada publicao da revista The Club
Megazine so terminantemente proibidos sem autorizao
escrita dos titulares dos direitos autorais.
Delphi marca registrada da Borland International,
as demais marcas citadas so registradas
pelos seus respectivos proprietrios.

FireDAC
A

Embarcadero divulgou recente uma tima noticia, a aquisio do AnyDAC, framework de acesso a dados .NoDelphi,
ele passou a ser FireDAC e esta disponvel para usurios do
XE3 e XE4 das verses Enterprise, Ultimate ou Architect. Para
quem usa a verso Professional, pode adquirir um pacote
add-on client/server.
FireDAC possui uma engine otimizada para acesso a dados. Alm disso,
existem vrias funes para abstrair o servidor de banco de dados usado, assim,
sua aplicao pode facilmente ser multi-banco. O servidor de banco de dados
fica a cargo de sua escolha ou do seu cliente.
O dbExpress tinha tambm esse objetivo, criar aplicaes multi-bancos,
mas exemplos indicam que projetos que utilizam mais de um servidor de
banco, usando dbExpress, no tem toda essa facilidade. FireDAC ainda tem a
vantagem de acesso a banco de dados no iOS.

Access
DB2
Firebird

No XE4, temos acesso de banco de dados no iOS para os seguintes bancos


de dados:

InterBase InterBase ToGo and IBLite


SQLite

Instalao
O instalador bastante simples, onde apenas temos que informar o que
queremos instalar (ferramentas, exemplos, help etc), como podemos ver na
Figura 1.

Nota: O FireDAC veio para substituir o dbExpress, mas esse continuar a ser suportado, apenas no ser mais atualizado. Se suas aplicaes
com dbExpress (ou at mesmo BDE, que existem hoje em dia), funcionam
normalmente, no h motivos para a troca. Para novos projetos, comece
a utilizar o FireDAC.

Veja a seguir os principais bancos suportados:








MySQL
SQL Server
Oracle
InterBase
PostgreSQL
SQLite
Sybase SQL Anywhere

Figura 1. Instalao do FireDAC

Assim como os exemplos de conexes que vamos utilizar, ou seja, os serjunho

2013

05

vidores de banco de dados que queremos conectar com o FireDAC (Figura 2).

Alm disso, temos acesso ao Monitor, um trace onde podemos ver como
esto as conexes usadas pela aplicao (Figura 5), ficando fcil encontrar os
gargalos de performance.

Dica: necessrio codificar para habilitar o monitoramento do trace


na aplicao.

Figura 2. Escolhendo os servidores que iremos utilizar com o FireDAC

Aps a instalao, abra o Delphi e veja que foi adicionado um novo menu
(Figura 3).

Figura 5. Monitorando o trace da aplicao

Na Tool Palette temos trs novas abas com os controles que poderemos
usar nas aplicaes com acesso a dados (Figura 6).
Figura 3. Menu no Delphi do FireDAC

Atravs do menu, temos acesso a algumas configuraes do FireDAC,


como por exemplo o Explorer onde temos os arquivos de configurao de
conexes aos banco de dados suportados. O Explorer semelhante ao BDE
Admin (Figura 4).

Figura 6. Componentes do FireDAC

Criando o primeiro exemplo


Vamos ento, criar o primeiro exemplo com o FireDAC. Adicione um
ADConnection e um ADQuery da aba FireDAC. D um duplo clique no ADConnection para abrir o editor de configurao de conexo (Figura 7).
Figura 4. Ferramenta Explorer do FireDAC
junho

06

2013

Agora, basta adicionar um DataSource, um DBGrid e fazer as conexes.


Ativando o ADQuery podemos ver os dados em design-time. Executando a
aplicao temos a mensagem de erro da Figura 9.

Figura 9. Mensagem de erro ao executar a aplicao

Figura 7. Editor de conexes do ADConnection

No editor, escolhemos o driver que vamos usar e todas as configuraes


referente a conexo. Algo bem simples, para quem esta acostumado a usar BDE
e dbExpress. No item Connection Definition Name escolhemos as conexes
criadas na ferramenta Explorer.

Essa mensagem ocorre, por que precisamos adicionar na aplicao a unit


ou o componente referente ao driver utilizado (nesse caso o SQL Server).
Isso ocorre por que o FireDAC no usa DLL, tudo esta no fonte da unidade,
ento precisamos adicionar um ADPhysMSSQLDriverLink ou colocar no uses
uADPhysMSSQL.
Tente novamente executar e acredito que ter o erro da Figura 10.

Aps, basta alterar para true a propriedade Connected para testar a


conexo com o banco. No ADQuery vamos fazer a consulta para o exemplo.
Note que no precisamos indicar o Connection, a propriedade Connection
preenchida automaticamente ao adicionar o componente no formulrio.
Na propriedade SQL, digite o cdigo da consulta (select * from Customers). Caso seja necessrio fazer testes, verificar se estamos selecionando
os dados corretos, basta dar um duplo clique no ADQuery que ser aberto
um editor onde podemos fazer consultas no banco, sabendo corretamente
os campos retornados, parmetros etc (Figura 8).

Figura 10. Mensagem de erro

Esse caso igual, basta adicionar o ADGUIxWaitCursor ou no uses uADGUIxFormsWait. Depois, basta executar a aplicao para visualizar o primeiro
exemplo usando FireDAC (Figura 11).

Figura 11. Primeiro exemplo com FireDAC

Nota: a unit da soluo do erro da Figura 9 depender do banco


utilizado.
Figura 8. Editor de consultas do ADQuery
junho

2013

07

Na parte referente a manipulao de dados (insert, update, delete), a


utilizao praticamente igual a utilizada com BDE. Temos componente para
transao (ADTransaction) que deve ser configurado nas propriedades Transaction e UpdateTransaction do ADConnection.

Nota: Voc pode usar o ADTable ou ADQuery para manipular os


dados. Mas deixo a dica para usar o ADQuery, pois assim, podemos usar
parmetros, sem a necessidade de trazer todos os registros da tabela,
pois vamos modificar apenas um.

Outros componentes
Vamos conhecer outros componentes interessantes do FireDAC.
ADScript: componente que concentra na propriedade SQLScripts vrios
comandos SQLs para serem usados na aplicao (Figura 12), alm de podermos
usar arquivos de script, usando a propriedade SQLScriptFileName.

autenticao do banco de dados. Voc deve configurar o componente na propriedade LoginDialog do ADConnection, lembrando tambm que a propriedade
LoginPrompt deve estar configurada para true.
ADGUIxErrorDailog: componente que mostra uma tela com o erro que a
aplicao executou. Serve apenas para erros com banco de dados.
Backup: a possibilidade de realizar backup do banco esta disponvel apenas para alguns servidores (que disponibilizam APIs para isso). Podemos fazer
backup de bancos Interbase/Firebird usando o ADIBBackup ou ADIBNBackup.
Nesse caso ainda precisamos indicar o driver que usaremos (ADPhysIBDriverLink). Para realizar o backup, basta configurar as propriedades BackupFiles (indicao do arquivo de backup), Database (arquivo FDB ou IB), Host,
UserName e Password.
Restore: semelhante ao backup, basta adicionar o ADIBRestore ou ADIBNRestore, configurar o driver e as propriedades mencionadas anteriormente.
Tanto o backup como restore, possui opes para as respectivas funcionalidades.

dbExpress x FireDAC
Vamos fazer um pequeno comparativo, bem simples, dbExpress x FireDAC.
Um comparativo que indique a melhor performance, com certeza deve usar
alguma ferramenta para isso. O que vou mostrar no um exemplo, criar uma
consulta e percorrer a mesma, para indicar o tempo que esse processo levar.

Figura 12. SQLScripts armazenando comandos SQLs

O hardware usado, ser o mesmo, ento no teremos diferenas. Teremos


o tempo gasto para o processamento da consulta para essa pequena comparao. A tela bem simples, onde temos um Grid e um boto, assim como
Labels para informaes (Figura 14).

Ainda temos um caixa de dialogo que mostra o que esta sendo feito na
execuo dos scripts (Figura 13), adicionando um ADGUIxScriptDialog e vinculando na propriedade ScriptDialog.

Figura 14. Tela para comparao entre dbExpress e FireDAC

Teremos uma tela para cada tecnologia (dbExpress e FireDAC), assim


criamos uma conexo para o mesmo banco e mesma consulta para cada
framework. s informaes na parte inferior da tela, indicam a quantidade
de registros, inicio e fim do processo e o tempo gasto.
A consulta ser feita em uma tabela com 20 campos e mais ou menos 8
mil registros. Veja na Figura 15 o resultado.

Figura 13. ADGUIxScriptDialog mostrando a execuo dos scripts

ADGUIxLoginDailog: componente que mostra uma tela de login para

08

junho

2013

Figura 15. Resultado da comparao

Se voc olhou somente para o campo Tempo, ficou espantado e deu a vitria ao FireDAC. Engano seu, note o campo Qtde Registros. O FireDAC, diferente
do dbExpress, no retorna todos os dados da consulta, ele retornou apenas 50.
Para quem trabalhou com BDE, sabe no que me refiro, os dados so
retornados aos poucos, de acordo com a necessidade do usurio (ao usar
o scroll do grid, o restante dos dados apresentado). Assim, aparentemente,
os dados so mostrados instantaneamente em tela.
Para retornar todos os dados, precisamos acessar a propriedade FetchOptions do ADQuery. Nessas opes, temos a propriedade RowsiteSize indicando
a quantidade retornada. Caso deseje, que sempre seja retornado todos os
dados mude Mode para fmAll.
16).

Como comentei, uma comparao precisa deve ser feita com ferramentas
indicadas para isso, quis apenas deixar uma dica para o leitor que sempre far
a pergunta: qual o melhor? Minha resposta: aquele que voc mais gosta ou
se adapta.

Concluses
Vimos nesse artigo como usar o FireDAC a partir de agora em suas aplicaes no Delphi. Compare com o BDE e dbExpress e tire suas prprias concluses
sobre facilidades, performance etc.
Um grande abrao a todos e at a prxima!

Ao executar a aplicao, nossa comparao rigorosamente igual (Figura

Sobre o autor
Luciano Pimenta
Figura 16. Resultado final da comparao

Nota: veja que o clculo de tempo, no leva em conta milsimos


de segundos, assim, o clculo simples do tempo inicial e final, apresenta
diferente.

Luciano Pimenta (NOVO DOMINIO: www.lucianopimenta.com) desenvolvedor Delphi/C#


para aplicaes Web com ASP.NET, Windows com Win32 e Windows Forms com .NET. Palestrante
da 4 edio da Borland Conference (BorCon) e da 1 Delphi Conference.
MVP Embarcadero, grupo de profissionais que ajudam a divulgar o Delphi no mundo.
Atualmente desenvolvedor da SoftDesign fbrica de softwares em Porto Alegre-RS.
Autor de mais de 90 artigos e de mais de 600 vdeos aulas publicadas em revistas e sites
especializados, alm de treinamentos presenciais e multimdias. consultor da FP2 Tecnologia
(www.fp2.com.br) onde ministra cursos de programao e banco de dados.

www.lucianopimenta.net

junho

2013

09

Desenvolva uma Aplicao


Desktop em C# e MySQL
Parte 2

o artigo anterior, iniciamos a preparao da nossa aplicao


abordando ferramentas voltadas criao do nosso banco
de dados (XAMPP e Heidi SQL) e tambm a criao do MER
(Modelo Entidade Relacionamento) com sua respectiva
estrutura de tabelas. Tambm foram mencionados alguns
aspectos da nossa aplicao, que nesse artigo sero detalhados. Esse artigo
ser destinado aos seguintes tpicos:
1.
2.

Logo abaixo da opo Select Platform voc encontrar o boto para


download, como mostra a imagem 02.

MySQL Connector
Visual Studio 2010

Para comear, vamos detalhar os tpicos desse artigo na ordem em que


foram mencionados.

1. MySQL Connector

Imagem 02: Boto de download do MySQL Connector.

Ao clicar no boto Download, voc ser redirecionado para uma pgina


de Login como mostra a imagem 03.

O MySQL Connector um driver ADO.NET totalmente gerenciado para


MySQL.
Para baixa-lo, acesse o link: http://dev.mysql.com/downloads/connector/
net/ (na imagem 01 apresentado a seo de download do MySQL Connector).

Imagem 03: Continuao do Download, Tela de Login ou Registro de Novo Usurio.

Imagem 01: Tela de download do MySQL Connector.

10

junho

2013

Caso voc no tenha conta cadastrada no site da Oracle, clique em Sign


Up, preencha o formulrio apresentado na imagem 04, confirme o cadastro
no e-mail retornado pela Oracle e se necessrio, acesse novamente o link de
download do MySQL Connector.

Aps fazer download do MySQL Connector, execute o instalador. A instalao em si no exige nenhuma configurao especial. Apenas na segunda tela
voc dever escolher a opo Complete como mostra a imagem 07. Aps
isso, continue executando o famoso NNF (Next, Next, Finish).

Imagem 04: Cadastro de novo Usurio no site da Oracle.

Observao: O MySQL foi comprado pela Oracle, por isso, no


estranhe o fato de voc iniciar o acesso no site do MySQL e em seguida
ser direcionado para o site da Oracle. Na verdade, essa etapa de criao
da conta muito importante para quem ainda no tem acesso, pois, a
grande vantagem disso, est no fato de voc poder ter acesso a recursos
de drivers do Oracle, Java, etc.
Caso voc j possua cadastro no site da Oracle ou tenha finalizado o cadastro baseado nas instrues desse artigo, clique no link Login (imagem 03)
para dar continuidade ao download, provavelmente voc seja redirecionado
para a tela apresentada na imagem 05.

Imagem 07: Opo de instalao (escolher Complete).

Com o MySQL Connector instalado, passaremos para o prottipo e no


momento oportuno voltaremos a falar sobre como utilizar o MySQL Connector
na nossa aplicao.

2.Visual Studio 2010


Abra o Visual Studio 2010 e v at a opo File -> New -> Project. Na tela
New Project certifique-se deque alguns requisitos estaro sendo atendidos:
1. Em Recent Templates, a linguagem utilizada C# -> Windows
como mostra a imagem 08.

Imagem 05: Tela de Login do site da Oracle.

Aps fazer o login, voc ser direcionado para outra tela onde finalmente
voc poder fazer o download do MySQL Connector como mostra a imagem 06.

Imagem 08: Visual C# -> Windows


Imagem 06: Tela de download do MySQL Connector.

junho

2013

11

2. Que a opo escolhida Windows Forms Application e a verso


do .NET Framework 4.0 como mostra a imagem 09.

Aps isso, o MySQL Connector ser adicionado e poder ser visualizado


na pasta References do Solution Explorer como mostra a imagem 13.

Imagem 09: Windows Forms Application e .NET Framework 4.0

3. Que o nome e a pasta do projeto foram definidos como mostra a


imagem 10.

Imagem 10: Definio de nome e pasta do projeto

Agora, com o Projeto iniciado no Visual Studio, podemos adicionar a


referncia do MySQL Connector ao nosso projeto como mostra a imagem 11.

Imagem 13: Confirmao do MySQL Connector no Projeto.

Agora que temos o ambiente preparado iniciaremos a parte prtica.


Imagem 11: Adicionando a referncia do MySQL Connector ao projeto.

Na tela Add Reference, selecione a aba .NET e em seguida procure e


selecione os componentes MySQL.Data, MySQL.Data.Entity e clique em OK
como mostra a imagem 12.

Tela de Login
Comearemos essa etapa retirando o arquivo Form1.cs do Projeto.
Para isso, v at a Solution Explorer, clique com o boto direito do mouse
no arquivo Form1.cs escolha a opo Delete como mostra a imagem 14.
Lembrando que ser solicitada a confirmao de excluso, mas basta clicar
em OK e o arquivo ser deletado permanentemente.

Imagem 12: Adicionando (MySQL.Data e MySQL.Data.Entity) ao projeto.


Imagem 14: Excluso do arquivo Form1.cs

12

junho

2013

Observao: No primeiro momento, pode parecer confuso a


excluso do arquivo e tambm no parece fazer muito sentido. Mas
lembre-se de que algumas pessoas podem estar utilizando esse artigo
como primeiro contato com .NET, pensando nisso, estarei facilitando
alguns pontos j que o intuito do artigo que todos possam utiliz-lo,
tantos os inexperientes quanto os mais experientes.

Propriedade

Valor

(Name)

frmLogin

Text

Acesso ao Sistema

Start Position

CenterScreen

FormBorderStyle

FixedSingle

MaximizeBox

False

Continuando...
Ainda na Solution Explorer, clique com o boto direito do mouse no projeto,
v at a opo Add -> New item como mostra a imagem 15.

Aps alterar as propriedades do Form vamos testar nossa aplicao.Repare


que nesse caso, o sistema enviar uma mensagem de erro no momento da
tentativa de execuo (tecla F5) como mostra a imagem 17 e 18.

Imagem 17: Mensagem de erro no momento da compilao (tecla F5).

Nesse caso, basta clicar no boto No e observar a aba Error List como
mostra a imagem 18.

Imagem 15: Add -> New Item.


Imagem 18: Mensagem detalhada do erro ocorrido no momento da compilao.

Na tela Add New Item, selecione a opo Windows Form e no campo


Name: digite Login.cs como mostra a imagem 16.

Repare que a mensagem retornada refere-se ao Form1 que foi excludo


antes de colocarmos o Form de Login no projeto. Para corrigir esse problema,
basta clicar duas vezes na mensagem da Error List para que o Visual Studio
abra o cdigo do local onde o erro ocorreu conforme imagem 19.

Imagem 19: Aplicao referenciando objeto que no existe mais no Projeto.


Imagem 16: Form de Login Login.cs

Para corrigir esse problema, basta trocar o nome do Form de Form1


para frmLogin como mostra a imagem 20.

No Form de Login altere as seguintes propriedades:


junho

2013

13

Tela Principal
Da mesma forma que fizemos com Form de Login, adicione um novo Form
ao Projeto com nome de Principal.cs.
No Form Principal altere as seguintes propriedades:

Propriedade
Imagem 20: Acerto na aplicao.

Feito isso, salve o projeto e pressione a tecla F5 para acessarmos nosso


prottipo. Como resultado, veremos nosso formulrio de Login vazio aparecendo no meio da tela conforme imagem 21.

Valor

(Name)

frmPrincipal

Text

Agenda de Contatos

Start Position

CenterScreen

isMDIContainer

True

Insira o controle MenuStrip e configure a propriedade (Name) conforme


tabela a seguir.

MenuStrip
Propriedade

Valor

(Name)

mStrpPrincipal

Aps adicionar o menu (Menu Strip) ao Form Principal (que servir como
container dos demais Forms), adicione os itens de menu deixando conforme
imagem 22.

Imagem 21: Prottipo do Login.

Agora que nos certificamos de que no h problemas no prottipo e que


nossa tela possui as propriedades configuradas anteriormente, continuaremos
o desenvolvimento da tela de Login.
Imagem 22: Itens do Menu.

Observao: Insira os controles correspondentes e configure suas


propriedades conforme achar melhor. Ao trmino da configurao das
propriedades, a tela dever parecer com a da imagem 22.

Tela Tipo de Contato


Da mesma forma que fizemos com Form Principal, adicione um novo Form
ao Projeto com nome de TipoContato.cs.
Ao final das configuraes, a tela de tipo de Contato dever estar semelhante imagem 23.

Imagem 23: Tela de Tipo de Contato.

Tela de Contato
Imagem 22: Tela de Acesso.

14

junho

2013

Da mesma forma que fizemos com Form TipoContato, adicione um novo

Form ao Projeto com nome de Contato.cs. A tela de tipo de Contato dever


estar semelhante imagem 24.

Concluso
Na segunda parte, ainda foi necessrio focar em alguns aspectos estruturais do prottipo, porm, no prximo artigo ser possvel ver questes prticas
de cdigo, implementao de funcionalidades de acesso e manipulao de
dados utilizando Entity Framework.

Referncias

Imagem 24: Tela de Tipo de Contato

http://info.abril.com.br/noticias/ti/oracle-ja-estava-de-olho-no-mysql-20042009-18.shl

Tela de Usurio
Da mesma forma que fizemos com Form TipoContato, adicione um novo
Form ao Projeto com nome de Contato.cs.Ao final, a tela de tipo de Contato
dever estar semelhante imagem 25.

Sobre o autor
Joo Marcos Sakalauska
31 anos, Analista de Sistemas e atua a mais de 10 anos na rea de
TI. Atualmente Lder Tcnico e Analista de Sistemas na IN3 Software
atuando em projetos que utilizam as tecnologias .NET e Sql Server.

marcos@theclub.com.br
Imagem 25: Tela de Contato.

junho

2013

15

Android
Gerenciadores de Base de Dados SQLite

ara quem no sabe, o sistema Android tem como banco de


dados nativo o SQLite. Todo mundo conhece os denominados
sistemas gerenciadores de Banco de Dados (SGBD), que nada
mais do que um conjunto de programas responsveis pelo
gerenciamento de uma base de dados. O foco principal destes
softwares gerenciar o acesso, manipulao e organizao dos dados disponibilizando uma interface amigvel e de fcil manuseio, permitindo realizar
a criao e manuteno das bases de dados. Temos algumas caractersticas
importantes, sendo:

importante ressaltar que a instalao destes aplicativos simples e


intuitiva, por isso no abordaremos detalhes.


Linguagem de definio de dados (Data Definition Language
- DDL): linguagem responsvel por especificar contedos, estruturao e
elemento de dados;

Linguagem de Manipulao de dados (Data Manipulation Language - DML): utilizadas para recuperao, incluso, remoo e modificao
de informaes em banco de dados. Temos basicamente dois tipos: As DMLs
Procedurais, que exigem que o usurio especifique quais dados so necessrios
e como obt-los. J as No-Procedurais exigem que o usurio especifique quais
dados so necessrios sem especificar como obt-los.

Dicionrio de dados: definies de elementos de dados e caractersticas.

considerado um poderoso SGBD, combinando uma interface fcil de


usar e com inmeros recursos. Podemos executar diversas operaes como
criar tabelas, vises, gatilhos e ndices. A tela inicial muito simples e intuitiva,
possuindo um boto para localizar o Banco SQLite e uma lista dos bancos registrados na ferramenta. O SQLite Manager possui um Banco padro chamado
defaultdb.db, o qual poder ser visto na Imagem 02.

A minha inteno neste artigo de apresentar alguns aplicativos SGBD


(gratuitos) existentes no mercado para a plataforma Android. Estes aplicativos
so encontrados na prpria loja do Google. Com o prprio dispositivo (celular
ou tablet) entre no Google Play e pesquise pelo nome sqlite. Encontraremos
diversos tipos de aplicativos, Ver Imagem 01.

Dividiremos este artigo em trs tpicos, sendo: SQLite Manager, aSQLiteManager e DB Browser.

1-) SQLite Manager

Imagem 02: Tela inicial do SQLite Manager.

Ao clicar no banco desejado, teremos diversas tabelas e dois botes, sendo


SQL e Info. Para fins de aprendizado focaremos apenas na tabela Product,
possuindo os campos: Id, name, price, description. Ver Imagem 03.

Imagem 01: Google Play.


junho

16

2013

Imagem 03: Tabelas.

Clicando no boto SQL teremos informaes como: Caminho da base


de dados e comandos pr-definidos como, por exemplo: instrues de SELECT,
INSERT, UPDATE, DELETE, CREATE, entre outros. Conseguimos gerenciar praticamente tudo. Clicando no boto Run obteremos o result set do comando
realizado. J o boto Hide SQL, como o prprio nome diz, ir esconder as
sugestes de instrues SQL e deixar a mostra apenas os resultados. Em History, temos um histrico. Ver Imagem 04.

Run SQL: Tela responsvel por executar instrues SQL de Select, Delete,
Update e Create.

2-) aSQLiteManager
tambm um gerenciador de banco de dados SQLite de cdigo aberto,
sendo que a verso 3.6 que estamos utilizando possui algumas caractersticas,
como:

Permitir mostrar arquivos por nome, tamanho, data ou cone e
classific-los por nome, extenso, tamanho, data;

Filtragem de arquivos;

Ter uma lista de favoritos;

Exportao no formato Csv;

Importao e Exportao das tabelas com triggers.
Este aplicativo bem intuitivo, no primeiro momento possumos quatro
botes, sendo:

Imagem 04: Executando comandos SQL.

Podemos tambm efetuar alteraes diretamente nas tabelas, para isto


clique sobre a Product e na regio superior direita, no caso do android 4.0,
temos trs pontinhos, que so as opes habilitadas para esta tela. Temos
um Menu com os itens: Insert Row, Reload, Page Size e Run SQL. Ver
Figura 05.

Abrir Banco de Dados: Localizar e abrir um banco de dados SQLite j


existente;
Novo Banco de Dados: Criar um banco de dados desde o incio;
Abertos recentemente: Lista de favoritos contendo todos os bancos de
dados abertos recentemente;
Sobre: Informaes sobre o desenvolvedor desta ferramenta.
Ver Imagem 07.

Figura 05: Tabela Product.

Insert Row: Responsvel por inserir registros na tabela selecionada. Para


fins didticos inserimos alguns dados e em seguida clicaremos no boto ok
para confirmar. Ver Imagem 06.
Figura 07: Tela Inicial do aSQLIteManager.

Ao contrrio do SQLiteManager citado anteriormente, este aplicativo


no possui um Banco de dados padro, sendo necessrio cri-lo. Para isto
clique no boto Novo banco de Dados e na prxima tela escolha um caminho e um nome para o mesmo clicando no boto Ok. Teremos os seguintes
botes, sendo:
Tabelas: Gerenciar as tabelas;
Views: Gerenciar as vises;
Indices: Gerenciar os ndices;
Query: Executar comandos SQL.
Figura 06: Inserindo Registros.

Reload: Recarregar/Atualizar os dados na tela.


Page Size: Quantidade de registros que sero mostradas da tela.

Clicando na regio superior direita temos tambm outros itens de menus,


como:
Exportar Banco de Dados: Exportar o banco para uso posterior.
Restaurar Banco de Dados: Restaurar banco j existente.
junho

2013

17

Abrir arquivo SQL: Abrir arquivo com instrues SQL pr-compiladas.


Informaes da Base: Informaes gerais como verso, codificadores,
tamanho da pgina, quantidade de paginao, etc.
Nova Tabela: local onde iremos criar uma nova tabela se necessrio.
Ver Imagem 08 para maiores detalhes.

Exportar Tabela: Exportar a tabela para uma futura consulta.


Exportar para arquivos do tipo CSV: Exportar para arquivos do tipo CSV
(arquivos que podem ser lidos no Excel, por exemplo).
Importar arquivos do tipo CSV: Carregar arquivos do tipo CSV, permitindo
uma melhor visualizao.
Definio da tabela: Contm informaes (Instrues de CREATE) da
tabela em questo.
Ver Imagem 10.

Figura 08: Gerenciamento das Tabelas, Vises, ndices e Instrues SQL.

Vamos criar uma tabela de Produtos contendo o campo Id do tipo


inteiro, nico, auto-incremento e chave primria e a descrio do tipo texto.
Clique em Nova Tabela escolhendo o nome da tabela e em seguida adicione
os campos citados anteriormente. O interessante desta ferramenta que
temos uma interface muito amigvel nos permitindo realizar tarefas desde
inserir valores padres para os campos at informar chaves estrangeiras e
referenci-las de acordo com sua utilizao. Ver Imagem 09.

Figura 10: Tabela Produtos.

3-) DB Browser
Este aplicativo exclusivamente para acessar as bases de dados SQLite,
permitindo inserir, editar, apagar, atualizar os registros ali contidos. Permite
a visualizao de toda a estrutura da base de dados, como por exemplo:
Vises, ndices, tabelas ou Gatilhos. Um recurso que achei interessante a
possibilidade de registrar diversas bases de dados. Outro recurso que tambm
facilita a vida do desenvolvedor a criao de um histrico de instrues SQL
j executada. Em seguida irei descrever algumas de suas funcionalidades.
Veremos na Imagem 11 os recursos iniciais.

Figura 09: Criando os campos.

Voltando na tela de gerenciamento (Figura 08), note que a tabela Produtos foi adicionada na seo Tabelas e a chave primria Id na seo
ndices. Ao clicar sobre a tabela Produtos temos um controle total sobre
a mesma, contando com os botes:
Figura 11: DB Browser, Recursos Iniciais.

Campos: Descrio completa dos campos incluindo ordem, nome, tipo,


etc...
Novo: Incluso de novos dados na tabela.
Dados: Listagem completa dos dados que esto contidos da tabela.
Na regio superior direita, outros recursos como:
Primeiro: Ir navegar at o primeiro registro da tabela.
ltimo: Ir navegar at o ltimo registro da tabela.
Filtro: Filtrar os dados de acordo com o que desejar.

18

junho

2013

No primeiro impacto podemos conferir os principais recursos deste aplicativo. Na regio central temos um histrico de tarefas realizadas e na regio
esquerda temos quatro botes, sendo:

Query SQL
Especificamente para executar instrues SQL. Ver Imagem 12.

Search DB
Permite localizar os arquivos de banco de dados em qualquer pasta, para
posteriormente utiliz-los. Ver imagem 15.

Figura 12: Query SQL Executando instrues SQL.

Na regio superior temos alguns botes:


Hide SQL: Esconder a instruo SQL j executada.
Clear SQL: Limpar a instruo SQL para poder criar outra em seguida.
Clear Grid: Limpar os dados que esto na Grid.
Execute: Executar a Instruo SQL.

Explore DB:
Aqui onde iremos explorar todos os recursos da base de dados, como
tabelas, vises, ndices ou gatilhos. Com a facilidade do Touch Screen podemos visualizar tanto as propriedades como os dados. Imagem 13.

Figura 15: Search DB.

Concluses
Procurei neste artigo abordar um assunto ainda muito cru e de pouqussimas documentaes, o uso de gerenciadores de banco de dados SQLite
diretamente de um dispositivo (celular ou tablet) usando o sistema Operacional
Android. Ressalto ainda que foram realizados muitos testes em outros aplicativos gratuitos e os trs que apresentaram melhores resultados no mbito
de gerenciamento de banco de dados foram estes. Logicamente que podero
existir outros to bons e fceis de utilizar, mas no momento desconheo.
Fiquem a vontade para nos mandar e-mails com sugestes de artigos ou
dicas para que seja publicado na revista, faremos o possvel e o impossvel
para ampar-los.

Figura 13: Explore DB Explorando a Base de Dados.

Um forte abrao e at o ms que vem!

Connections
Como o prprio nome j diz, aqui que temos todas as conexes realizadas, todas as bases de dados registradas. Temos a possibilidade de ativar ou
desativar uma conexo facilmente. Ver Imagem 14.

Sobre o autor
Thiago Cavalheiro Montebugnoli
adora aprender novas tecnologias. Formado pela Faculdade de Tecnologia de Botucatu
SP (FATEC), j desenvolveu softwares utilizando a plataforma .NET, Delphi junto com Banco
de Dados SQL Server e Firebird. Atualmente trabalha no Centro de Processamento de Dados da
Prefeitura Municipal de Ita-SP colunista mensal da Revista The Club Megazine e consultor
Tcnico do The Club. Possui as seguintes certificaes: MCP - Microsoft Certified Professional,
MCTS - Microsoft Certified Technology Specialist, MCAD - Microsoft Certified Application Developer
e MCSD - Microsoft Certified Solution Developer.

thiago@theclub.com.br
Figura 14: Conexes.

junho

2013

19

TValueListEditor

Criando e Manipulando dados

este artigo vamos falar sobre a criao e manipulao de


arquivos.ini atravs do Delphi 7.
Os aquivos.ini em geral so utilizados para armazenar
informaes de configurao. Neste exemplo ser feito para
auxiliar na conexo com o banco de dados.

Para este exemplo vamos utilizar o componente TValueListEditor, que


permite aos usurios editarem listas de cadeias. Este editor por padro recebe
a Key = Value, ou seja, os nomes aparecem em uma coluna Key, e os valores
em uma coluna intitulada Value, porm voc pode personalizar esses rtulos
alm de controlar atravs das propriedades do componente se os usurios
podem selecionar, adicionar ou editar os dados.
Para o desenvolvimento desta aplicao vamos precisar alm do ValueListEditor de alguns componentes conforme listagem abaixo:
- 7 Buttons;
- 1 Edit podemos nome-lo de edtpesquisa;
- 1 RadioGroup para definirmos o VendorLib da conexo.
Aps adicionar cada componente o formulrio deve ficar parecido com
a imagem 1:

Adicione tambm os componentes conforme Imagem 2:

- Timer para controlar a inatividade dos botes;


- IdIPWatch para capturar o IP da mquina;
- OpenDialog para localizarmos o banco de dados;
- SQLConnection neste caso ser apenas utilizado para testarmos a
conexo.

Imagem 2 - Componentes


Vamos comear definindo o evento OnTimer do componente Timer,
ele ser responsvel por definir a ativao e desativao dos botes. Nomeie
os botes conforme imagem 3:

Imagem 3 - Botes

Imagem 1 - Formulrio principal

20

junho

2013

- Caption:= Criar Arquivo / Name:= btnCriar;


- Caption:= Carregar / Name:= btnCarregar;
- Caption:= Salvar / Name:= btnSalvar;
- Caption:= Database... / Name:= btnLocalizar;
- Caption:= Nova Conexo / Name:= btnNovo;
- Caption:= Excluir Linha / Name:= btnExcluir;
- Caption:= Limpar / Name:= btnLimpar;

- Caption:= Conectar / Name:= btnConectar;


- Caption:= Desconectar / Name:= btnDesconectar;
- RadioGroup -> Caption:= VendorLib / Name:= rgLib

No evento Ontimer adicione os comandos conforme listagem 1:

Listagem 1. OnTimer

Procedure TForm1.
Timer1Timer(Sender: TObject);
begin
btnSalvar.Enabled:=
(ValueListEditor.Strings.Count
> 0) and (I > 1);
btnNovo.Enabled:=
ValueListEditor.Strings.Count >
0;
btnCarregar.Enabled:=
ValueListEditor.Strings.Count =
0;
btnLocalizar.Enabled:=
ValueListEditor.Strings.Count >
0;
btnExcluir.Enabled:=
ValueListEditor.Strings.Count >
0;
rgLib.Enabled:=
ValueListEditor.Strings.Count >
0 ;
btnDesconectar.Enabled:=
Conexao.Connected = True;
end;

Para que possamos prosseguir vamos criar as variveis globais do
nosso projeto conforme Imagem 4:

Imagem 4 - Variveis


Para o uso de alguns componentes ser necessrio adicionarmos
algumas Uses, veja se em seu projeto est conforme a imagem 5:

Imagem 5 - Uses


Em seguida vamos adicionar alguns comandos no prprio formulrio, no evento OnCreate vamos passar a raiz do nosso projeto para a varivel
InitialDir conforme listagem 2.

Listagem 2. OnCreate

Procedure TForm1.
FormCreate(Sender: TObject);
begin
InitialDir:=
ExtractFilePath(ParamStr(0));
end;


J no evento OnShow faremos uma busca na raiz do nosso projeto
para verificar se j existe o arquivo Connect.ini, caso exista o boto Criar
Arquivo ficar desabilitado seno ficar habilitado. Cdigo ficar conforme
listagem 3.
Listagem 3. OnShow

Procedure TForm1.
FormShow(Sender: TObject);
begin
FileName:=
ExtractFilePath(Application.
ExeName)+Connect.ini;
InitialDir :=
ExtractFilePath(FileName);
btnLimpar.Enabled:= False;
btnConectar.Enabled:= False;
//Verifica se existe o arquivo
Connect para ativar o boto de
criao
if FileExists(FileName)
then
begin
btnCriar.Enabled:=
false;
end
else
btnCriar.Enabled:= True;
end;


Prximo passo ser configurarmos nosso OpenDialog, apenas
vamos definir o tipo de arquivo que ele ir buscar que neste exemplo se trata
de arquivos de Banco de dados, ento na propriedade Filter defina a extenso
conforme desejar, no exemplo vamos utilizar o filtro: Arquivos.DAT|*.DAT.

Por fim o ltimo componente a ser configurado ser o SQLConnection, vamos alterar apenas duas propriedades conforme imagem 6:
Name:= Conexao;
DriverName:= Aqui neste exemplo vamos utilizar o Interbase.
junho

2013

21

begin
ValueListEditor.
InsertRow(BlobSize,1,True);
ValueListEditor.InsertRow(Co
mmitRetain,False,True);
ValueListEditor.
InsertRow(Database,,True);
ValueListEditor.InsertRow(Er
rorResourceFile,,True);
ValueListEditor.InsertRow(Lo
caleCode,0000,True);
ValueListEditor.InsertRow(Pa
ssword,masterkey,True);
ValueListEditor.InsertRow(Ro
leName,RoleName,True);
ValueListEditor.InsertRow(Se
rverCharSet,,True);
ValueListEditor.InsertRow(SQ
LDialect,3,True);
ValueListEditor.
InsertRow(Interbase TransIsola
tion,ReadCommited,True);
ValueListEditor.
InsertRow(User_
Name,sysdba,True);
ValueListEditor.InsertRow(Wa
itOnLocks,True,True);
end;

Imagem 6 - Propriedades da Conexo.


Antes de iniciarmos a configurao de cada boto vamos definir
2 aes importantes no nosso projeto. A primeira simples, marque como
True a propriedade ReadOnly do edtpesquisa assim no ser possvel editar
valores neste campo, a segunda e mais importante para o decorrer do projeto
fica nos eventos do ValueListEditor, v ate o evento OnSelectCell e defina o
cdigo conforme listagem 4:
Listagem 4. OnSelectCell

Procedure TForm1.ValueListEdito
rSelectCell(Sender: TObject;
ACol, ARow: Integer; var
CanSelect: Boolean);
begin
// Varivel I recebe a linha
selecionada no ValueList
I:= ARow;
end;

A listagem 4 uma parte essencial, pois apenas com o valor adicionado na varivel I podemos aplicar as configuraes que sero definidas
no decorrer do projeto.

Agora j podemos colocar a mo na massa, vamos comear criando
uma funo chamada NovoIni que ser responsvel por definir os valores do
Connect, chame a funo conforme imagem 7:


Como podemos ver a funo cria cada linha que ficar dentro do
TvalueListEditor, neste exemplo alguns valores de conexo so tratados como
padro por isso j esto definidos desde a criao, porm podem ser editados
em tempo de execuo.

Com as variveis e funes criadas podemos comear a definir as
aes dos botes, dentro do evento OnClick do boto Criar Arquivo defina o
cdigo conforme listagem 6:
Listagem 6. Boto Criar Arquivo

Imagem 7 - Funo NovoIni.

Dentro da funo vamos definir o cdigo conforme listagem 5:

Listagem 5. Funo Novolni

Function TForm1.NovoIni:
String;

22

junho

2013

Procedure TForm1.
btnCriarClick(Sender: TObject);
begin
path:=
ExtractFilePath(Application.
ExeName);
// Cria o arquivo
Data:= TIniFile.Create(path +
Connect.ini);
// Inseri os primeiros dados
(2 linhas)
Data.WriteString(NOME,Driv
erName,);

begin
inherited;
FileName:=
ExtractFilePath(Application.
ExeName)+Connect.ini;
InitialDir :=
ExtractFilePath(FileName);
if FileExists(FileName)
then
begin
ValueListEditor.
Strings.LoadFromFile(FileName);
ValueListEditor.
SetFocus;

btnConectar.Enabled:=
True;
end;
begin
// Chama a funo
NovoIni;
end;
// necessrio salvar aps a
criao do arquivo
ValueListEditor.Strings.
SaveToFile(FileName);
btnCriar.Enabled:= False;
end;
end;


Como podemos ver o boto Criar Arquivo segue at a raiz do
nosso projeto e gera um arquivo do tipo .ini, para que o arquivo seja criado
corretamente devemos passar pelo menos as 2 primeiras linhas com os dados
do arquivo, para uma economia de cdigo aps definirmos as linhas iniciais
chamamos a funo NovoIni que j contm os outros campos da nossa
conexo, por fim salvamos os dados para que no haja h possibilidade do
arquivo ficar em branco.

Com o arquivo salvo em nosso projeto o boto carregar fica ativo, ento
j podemos definir sua ao, segue cdigo conforme listagem 7:
Listagem 7. Boto Carregar

Procedure TForm1.
btnCarregarClick(Sender:
TObject);
begin
inherited;
FileName:=
ExtractFilePath(Application.
ExeName)+Connect.ini;
InitialDir :=
ExtractFilePath(FileName);
if FileExists(FileName) then
begin

btnCriar.Enabled:= false;
ValueListEditor.Strings.
LoadFromFile(FileName);
ValueListEditor.SetFocus;
btnConectar.Enabled:= True;
btnLimpar.Enabled:= True;
end
else
ShowMessage(Arquivo no
encontrado!);
end;

Depois que o arquivo carregado os dados so inseridos no TvalueListEditor e assim j podem ser manipulados. Para salvar as alteraes
realizadas basta adicionar no evento Onclick do boto salvar conforme listagem
8:
Listagem 8. Boto Salvar

Procedure TForm1.
btnSalvarClick(Sender:
TObject);
begin
inherited;
if FileExists(FileName) then
begin
ValueListEditor.Strings.
SaveToFile(FileName);
ShowMessage(Gravao
realizada com sucesso);
edtPesquisa.Text:= ;
end
else
ShowMessage(Nenhum arquivo
para salvar);
end;


Como estamos trabalhando com um configurador de conexo ser
necessrio indicarmos o local onde est nosso banco de dados, portanto vamos
facilitar esta ao, no Onclick do boto Database... vamos chamar o OpenDialog para realizarmos uma busca local, assim que o arquivo for definido o IP
local ser setado no campo de texto e tambm no ValueListEditor juntamente
com o local do arquivo conforme listagem 9:
Listagem 9. Boto Database

Procedure TForm1.
btnLocalizarClick(Sender:
TObject);
begin
edtPesquisa.Text:= ;
// I Indica a linha
junho

2013

23

selecionada e captura o valor


da Key e passa para a varivel
NomeChave para verificao
NomeChave:= ValueListEditor.
Keys[I];
// Se a linha for a correta o
processo Avana
If (NomeChave <> Database)
then
begin
ShowMessage(Selecione a
Linha com o Database que deseja
Alterar!);
Abort;
end;
if OpenDialog1.Execute then
begin
// IP Indica o IP local e
adiciona no campo EdtPesquisa
+ o nome do arquivo que
encontramos
edtPesquisa.Text:=
IP.LocalIP + : + OpenDialog1.
FileName;
end;
if edtPesquisa.Text <>
then
begin
ValueListEditor.SetFocus;
// Inseri a linha com os
dados no local selecionado em I
ValueListEditor.Insert
Row(Database,edtPesquisa.
Text,False);
// Aps o processo de
insero necessrio tirar a
linha que ficou sobrando
ValueListEditor.Strings.
Delete(I);
end
else
ShowMessage(Nenhum Arquivo
Selecionado!);
end;


Para que toda esta ao seja executada corretamente necessrio
que o campo Key do ValueListEditor seja igual a Database, ou seja, o campo
que o usurio clicar tem que ser o local onde ser setado o valor do banco de
dados, uma mensagem ser exibida se o usurio tentar inserir os dados em
outra linha. Seu TvalueListEditor deve ficar conforme imagem 8:

24

junho

2013

Imagem 8 TValueListEditor.


Case haja a necessidade de criar uma nova conexo dentro do nosso
arquivo Connect.ini foi criado o boto Nova Conexo assim ele gera novas
linhas dentro do nosso TvalueListEditor para que seja preenchido com os
novos dados, segue cdigo na listagem 10:
Listagem 10. Boto Nova Conexo

Procedure TForm1.
btnNovoClick(Sender: TObject);
begin
ValueListEditor.Strings.
Add([NOME]);
ValueListEditor.InsertRow(Dr
iverName,Interbase,True);
// Chama a funo
NovoIni;
end;


Em alguns casos pode haver a necessidade de excluir pelo menos
uma conexo, porm deve obedecer algumas regras, como por exemplo: de
manter pelo menos uma linha no TvalueListEditor, assim nosso projeto no
entra na regra de ativao do Ontimer. Essa ao de excluir s realmente
efetivada se salvarmos as alteraes. Abaixo listagem 11 com a ao de excluso.
Listagem 11. Boto Excluir

Procedure TForm1.
btnExcluirClick(Sender:
TObject);
begin
// Se a linha for maior que
1 a excluso realizada com
sucesso
If I > 1 then
begin
ValueListEditor.
DeleteRow(I);
end;
end;


Para facilitar a manipulao dos dados podemos criar o boto Limpar assim se alguma ao realizada for considerada desnecessria podemos
simplesmente retir-la do ValueListEditor sem ao menos aplicar no nosso
arquivo Connect.ini. Segue cdigo na listagem 12:
Listagem 12. Boto Limpar

Procedure TForm1.
btnLimparClick(Sender:
TObject);
begin
inherited;
FileName := ;
edtPesquisa.Text:= ;
ValueListEditor.Strings.
Clear;
// Inativa alguns Botes
btnConectar.Enabled:= False;
btnLimpar.Enabled:= False;
begin
FileName:=
ExtractFilePath(Application.
ExeName)+Connect.ini;
InitialDir :=
ExtractFilePath(FileName);
// Verifica se existe o
arquivo Connect para ativar o
boto de criao
if FileExists(FileName)
then
begin
btnCriar.Enabled:=
false;
end
else
btnCriar.Enabled:=
True;
end;
end;

Antes de iniciarmos o teste de conexo devemos criar uma opo de
escolha das bibliotecas de banco de dados. Na imagem 9 possvel visualizar
nosso RadioGroup com as possveis bibliotecas que utilizaremos.

Imagem 9 - VendorLib rgLib.

Abaixo o cdigo do evento Onclik do RadioGroup:

Listagem 13. RadioGroup

Procedure TForm1.
rgLibClick(Sender: TObject);

begin
case rgLib.ItemIndex of
0: Conexao.VendorLib :=
GDS32.dll;
1: Conexao.VendorLib :=
FBClient.dll;
end;
end;


Com os valores j indicados no nosso TvalueListEditor podemos
realizar o teste se o arquivo Connect que criamos est com as informaes
corretas, com o componente SQLConnect adicionado no projeto podemos
passar os valores via cdigo para cada campo. Segue abaixo cdigo do boto
conectar:
Listagem 14. Boto Conectar

Procedure TForm1.
btnConectarClick(Sender:
TObject);
var
Banco, Usuario, Senha,
Drivername, Blobsize, Commit,
ErrorResource, LocaleCode,
RoleName, ServerChar, Dialect,
TransIsolation, WaitOnLocks :
String;
ValorCommit, ValorBlob,
ValorDriver, Valorbd, ValorUsu,
ValorSenha, ValorError,
ValorLocale, ValorRole,
ValorServer, ValorDialect,
ValorIsolation, ValorWaint:
String;
begin
//verifica a dll VendorLib
If Conexao.VendorLib =
then
begin
ShowMessage(Selecione um
VendorLib!);
abort;
end;
//Verifica se a linha
selecionada a que se encontra
o Database
Conecta:= ValueListEditor.
Keys[I];
If (Conecta <> Database)
then
begin
ShowMessage(Selecione
a linha com seu database para
testar a Conexo!);
abort;
end
junho

2013

25

else
//Indica a posio de cada
Valor
ValorDriver:= ValueListEditor.
Strings.Strings[I-4];
ValorBlob:= ValueListEditor.
Strings.Strings[I-3];
ValorCommit:= ValueListEditor.
Strings.Strings[I-2];
Valorbd:= ValueListEditor.
Strings.Strings[I-1];
ValorError:= ValueListEditor.
Strings.Strings[I];
ValorLocale:= ValueListEditor.
Strings.Strings[I+1];
ValorSenha:= ValueListEditor.
Strings.Strings[I+2];
ValorRole:= ValueListEditor.
Strings.Strings[I+3];
ValorServer:= ValueListEditor.
Strings.Strings[I+4];
ValorDialect:=
ValueListEditor.Strings.
Strings[I+5];
ValorIsolation:=
ValueListEditor.Strings.
Strings[I+6];
ValorUsu:= ValueListEditor.
Strings.Strings[I+7];
ValorWaint:= ValueListEditor.
Strings.Strings[I+8];
//Pega apenas o value e
remove a Key
Banco:= copy(Valorbd, Pos(=
,Valorbd)+1,length(Valorbd)Pos(=,Valorbd)+1);
Usuario:= copy(ValorUsu, Pos
(=,ValorUsu)+1,length(ValorU
su)-Pos(=,ValorUsu)+1);
Senha:= copy(ValorSenha, Pos(
=,ValorSenha)+1,length(ValorS
enha)-Pos(=,ValorSenha)+1);
Drivername:=
copy(ValorDriver, Pos(=,Valor
Driver)+1,length(ValorDriver)Pos(=,ValorDriver)+1);
Blobsize:= copy(ValorBlob, Po
s(=,ValorBlob)+1,length(Valor
Blob)-Pos(=,ValorBlob)+1);
Commit:= copy(ValorCommit,
Pos(=,ValorCommit)+
1,length(ValorCommit)-

26

junho

2013

Pos(=,ValorCommit)+1);
ErrorResource:=
copy(ValorError, Pos(=,Valo
rError)+1,length(ValorError)Pos(=,ValorError)+1);
LocaleCode:=
copy(ValorLocale, Pos(=,Valor
Locale)+1,length(ValorLocale)Pos(=,ValorLocale)+1);
RoleName:= copy(ValorRole, Po
s(=,ValorRole)+1,length(Valor
Role)-Pos(=,ValorRole)+1);
ServerChar:=
copy(ValorServer, Pos(=,Valor
Server)+1,length(ValorServer)Pos(=,ValorSenha)+1);
Dialect:= copy(ValorDialect,
Pos(=,ValorDialect)+1
,length(ValorDialect)Pos(=,ValorDialect)+1);
TransIsolation:=
copy(ValorIsolation, Pos
(=,ValorIsolation)+1,
length(ValorIsolation)Pos(=,ValorIsolation)+1);
WaitOnLocks:=
copy(ValorWaint, Pos(=,Valo
rWaint)+1,length(ValorWaint)Pos(=,ValorWaint)+1);
//Passa os valores para cada
campo
Conexao.Params.
Values[database] := Banco;
Conexao.Params.Values[user_
name] := Usuario;
Conexao.Params.
Values[password] := Senha;
Conexao.Params.
Values[drivername]:=
Drivername;
Conexao.Params.
Values[blobsize]:= Blobsize;
Conexao.Params.
Values[commitretain]:=
Commit;
Conexao.Params.
Values[errorresourcefile]:=
ErrorResource;
Conexao.Params.
Values[localecode]:=
LocaleCode;
Conexao.Params.

Values[rolename]:= RoleName;
Conexao.Params.
Values[servercharset]:=
ServerChar;
Conexao.Params.
Values[sqldialect]:= Dialect;
Conexao.Params.
Values[interbase
transIsolation]:=
TransIsolation;
Conexao.Params.
Values[waitonlocks]:=
WaitOnLocks;
Try
Conexao.Open;
Except
ShowMessage(Falha
na Conexo, Verifique as
informaes!);
end;
if Conexao.Connected = True
then
begin
ShowMessage(Conectado!);
btnConectar.Enabled:=
False;
btnLimpar.Enabled:=
False;
end;
end;


Nesta listagem 14 criamos uma varivel para cada campo da nossa
conexo, isso s foi necessrio para que possamos testar mais de uma conexo,
no exemplo acima utilizamos a funo Copy para selecionarmos apenas os
dados partindo do = , ou seja, os valores que sero setados dentro do nosso
SQLConnection so os campos Value do nosso ValueListEditor.

Se todos os dados estiverem corretos a conexo ser concluda,
caso haja algum erro uma mensagem ser exibida. Aps concluirmos o teste
de conexo interessante fecharmos a conexo de teste, portanto na listagem
15 est o cdigo do boto desconectar:
Listagem 15. Boto Desconectar

Procedure TForm1.
btnDesconectarClick(Sender:
TObject);
begin
btnLimpar.Enabled:= True;
btnConectar.Enabled:= True;

Conexao.Connected:= False;
Conexao.Close;
ShowMessage(Desconectado!);
end;


Agora que j criamos e manipulamos o arquivo Connect podemos
ver o resultado final na pasta raiz do nosso projeto, seu arquivo deve ficar
parecido com a imagem 10:

Imagem 10 - Connect.ini

Concluso

Vimos como criar e manipular arquivos.ini de acordo com nossas especificaes, utilizamos o componente TValueListEditor que segue um formato
muito similar as conexes do prprio Delphi, portanto cria uma facilidade na
visualizao das informaes que sero manipuladas no decorrer do projeto.
Neste caso utilizamos para configurar uma conexo com o banco de dados,
contudo este tipo de desenvolvimento pode ser utilizado em outros exemplos
de acordo com suas necessidades.

Bom isso pessoal espero que tenham gostado dessa dica! At a
prxima!

Sobre o autor
Jeferson Silva de Lima
Consultor The Club.

suporte@theclub.com.br
junho

2013

27

dicas the club


Delphi XE2 usando Gestures
Nesta dica irei apresentar como desenvolver aplicativos usando gestos do mouse para fazer a interao com os dados de tabelas.Usaremos o componente
ActionManager para poder trabalhar com gestos, na figura 01 e figura 02 esto as configuraes que eu vou usar nesse exemplo.
Clique duas vezes sobre o componente ActionManager para abrir as configuraes.

Figura01: Clicar na opo New Standard Action para escolher as aes.

Figura 02: Selecionar as aes desejadas.

28

junho

2013

Agora adicione o componente GestureManager, seu form dever ficar idntico ao da figura 03.

Figura 03: Os dois componentes no form.

Selecione o form, na propriedade Touch na barra ObjectInspector selecione o componente GestureManager. Ver figura 04.

Figura 04: Selecione o GestureMAnager.


junho

2013

29

Eu vou trabalhar com os controles Dataset (TDataSetFirst, TDataSetPrior, TDataSetNext e TDataSetLast) do componente ActionManager , esses controles
so as aes do mouse para navegar nos dados de uma tabela.
Para configur-los basta clicar no form na propriedade Standard voc vai escolher o movimento do mouse com a ao do Dataset como mostra a figura 05.

Figura 05: Configurando as aes com o gesto do mouse.

Agora vou explicar como fazer uma conexo com uma tabela de teste.
Adicione o componente table da aba DBE.
Na propriedade DataBasename escolha a opo DBDEMOS.
Na opo TableName escolha Biolife,clique 2x encima do componente table e depois Addallfields.
Selecione todos os fields e arrastem para o form, todos os campos da tabela sero adicionados. Coloque true na opo active do componente table.

Concluso
Todas as configuraes esto prontas, agora voc pode testar a navegao dos dados na tabela usando o movimento do mouse clicando e arrastando em
qualquer rea do form. Voc pode usar esses componentes de varias formas s depende da sua criatividade!
Espero que tenham gostado e at a prxima.

30

junho

2013

junho

2013

05

junho

2013

Você também pode gostar