Por ser um tutorial mais básico, vou deixá-lo apenas em video, no próximo iremos criar a janela Splash
Mostrando postagens com marcador Firebird. Mostrar todas as postagens
Mostrando postagens com marcador Firebird. Mostrar todas as postagens
terça-feira, 15 de novembro de 2011
sexta-feira, 28 de outubro de 2011
Problemas com o case sensitive do Firebird.
Hoje estava procurando algumas coisas sobre o comando INNER JOIN no Firebird e achei muitas pessoas com dúvida sobre este problema.
No Firebird, este problema pode ser resolvido facilmente usando o comando UPPER, como proceder?
Simples…
Imagine uma situação assim:
Tabela contatos:
Queremos selecionar este contato, mas podemos ter um usuário preguiçoso que vai digitar o seguinte na consulta:
SELECT * FROM contatos WHERE Nome=‘josé’ AND Apelido=‘zé’;
O que esta consulta retornará no Firebird?
Nada… Pois ele é case-sensitive, ou seja, José é diferente de jOsé que é diferente de josé… Ele diferencia letra maiúscula de letra minúscula.
Vamos resolver este problema?
SELECT * FROM contatos WHERE UPPER(Nome)=UPPER(‘José’) AND UPPER(Apelido)=UPPER(‘zé’);
A consulta retornará os valores que queríamos.
O que este comando faz?
Ele vai converter todos os caracteres do campo selecionado em UPPER() para maiúsculos e na string de comparação idem. No nosso caso ele converteu a string original que era José para JOSÉ e a string de consulta que era josé para JOSÉ, o mesmo para Zé e zé.
Deste jeito, você consegue “burlar” o problema de sensibilidade a caixa do
Firebird, espero ter ajudado.
Até a próxima.
No Firebird, este problema pode ser resolvido facilmente usando o comando UPPER, como proceder?
Simples…
Imagine uma situação assim:
Tabela contatos:
| Campo | Valor |
| Nome | José |
| Apelido | Zé |
Queremos selecionar este contato, mas podemos ter um usuário preguiçoso que vai digitar o seguinte na consulta:
SELECT * FROM contatos WHERE Nome=‘josé’ AND Apelido=‘zé’;
O que esta consulta retornará no Firebird?
Nada… Pois ele é case-sensitive, ou seja, José é diferente de jOsé que é diferente de josé… Ele diferencia letra maiúscula de letra minúscula.
Vamos resolver este problema?
SELECT * FROM contatos WHERE UPPER(Nome)=UPPER(‘José’) AND UPPER(Apelido)=UPPER(‘zé’);
A consulta retornará os valores que queríamos.
O que este comando faz?
Ele vai converter todos os caracteres do campo selecionado em UPPER() para maiúsculos e na string de comparação idem. No nosso caso ele converteu a string original que era José para JOSÉ e a string de consulta que era josé para JOSÉ, o mesmo para Zé e zé.
Deste jeito, você consegue “burlar” o problema de sensibilidade a caixa do
Firebird, espero ter ajudado.
Até a próxima.
Usando comando INSERT com SELECT no FireBird
Aqui vai um exemplo simples de como usar os dois comandos juntos para inserir dados que estão em outra tabela.
Vamos usar um caso em que tenhamos estas duas tabelas:
Tabela Cliente (TAB_CLI):
ID_CLIENTE
NOME_CLIENTE
TEL_CLIENTE
Tabela Vendas (TAB_VENDA):
ID_VENDA
ID_CLIENTE
PRODUTO
VALOR
Para facilitar na hora de escolher qual cliente efetuou a compra, podemos passar o nome do cliente como parâmetro e inserir seu ID automaticamente.
Fica assim:
insert into TAB_VENDA (ID_VENDA, ID_CLIENTE, PRODUTO, VALOR) VALUES (1, (select ID_CLIENTE from TAB_CLI where NOME_CLIENTE =’JOÃO’), ‘PRODUTO 1′, 10);
No local onde será inserido o valor do cliente coloca-se um select que retornará seu ID pelo nome passado na cláusula where, note que este select funcionará se não houver em registros duplicados, se existirem dois clientes com o nome ‘João’ você poderá adicionar a venda para outro cliente com o mesmo nome. Para corrigir este problema você poderá passar outro parâmetro junto ao nome, que não tenha duplicação, como por exemplo, o RG ou CPF do mesmo.
Obs.: O mesmo comando rodou sem problemas no PSQL.
Abraços até a próxima.
Vamos usar um caso em que tenhamos estas duas tabelas:
Tabela Cliente (TAB_CLI):
ID_CLIENTE
NOME_CLIENTE
TEL_CLIENTE
Tabela Vendas (TAB_VENDA):
ID_VENDA
ID_CLIENTE
PRODUTO
VALOR
Para facilitar na hora de escolher qual cliente efetuou a compra, podemos passar o nome do cliente como parâmetro e inserir seu ID automaticamente.
Fica assim:
insert into TAB_VENDA (ID_VENDA, ID_CLIENTE, PRODUTO, VALOR) VALUES (1, (select ID_CLIENTE from TAB_CLI where NOME_CLIENTE =’JOÃO’), ‘PRODUTO 1′, 10);
No local onde será inserido o valor do cliente coloca-se um select que retornará seu ID pelo nome passado na cláusula where, note que este select funcionará se não houver em registros duplicados, se existirem dois clientes com o nome ‘João’ você poderá adicionar a venda para outro cliente com o mesmo nome. Para corrigir este problema você poderá passar outro parâmetro junto ao nome, que não tenha duplicação, como por exemplo, o RG ou CPF do mesmo.
Obs.: O mesmo comando rodou sem problemas no PSQL.
Abraços até a próxima.
terça-feira, 25 de outubro de 2011
Tutoriais de Lazarus com Firebird
Nos próximos dias, estarei começando alguns tutoriais sobre o desenvolvimento com Lazarus, para quem não conhece a ferramenta aconselho dar uma olhada nessa explicação da Wikipédia.
Para a criação dos tutorias, eu irei usar o Debian como plataforma, também precisaremos do Firebird instalado, a idéia é termos uma noção de como fazer a comunicação entre aplicações feitas em Lazarus com esse banco de dados.
O cronograma será basicamente o seguinte:
Instalação do Lazarus no Debian Squeeze.
Criação de um projeto em Lazarus.
Criação do banco de dados em Firebird usando o FlameRobin.
Criação de uma janela Splash para o exemplo.
Criação do Menu Principal.
Criação dos Formulários de controle.
Se tudo correr bem, podemos tentar alguma coisa relacionada com relatórios e gráficos.
No próximo post começaremos com o projeto.
Para a criação dos tutorias, eu irei usar o Debian como plataforma, também precisaremos do Firebird instalado, a idéia é termos uma noção de como fazer a comunicação entre aplicações feitas em Lazarus com esse banco de dados.
O cronograma será basicamente o seguinte:
Instalação do Lazarus no Debian Squeeze.
Criação de um projeto em Lazarus.
Criação do banco de dados em Firebird usando o FlameRobin.
Criação de uma janela Splash para o exemplo.
Criação do Menu Principal.
Criação dos Formulários de controle.
Se tudo correr bem, podemos tentar alguma coisa relacionada com relatórios e gráficos.
No próximo post começaremos com o projeto.
quarta-feira, 28 de setembro de 2011
Campo auto incremento no Firebird usando isql (Generator + Trigger)
Hoje vamos criar um campo auto incremento usando Generator e Trigger no Firebird, com o isql.
O que faremos é o seguinte, criar um GENERATOR para armazenar um valor para o campo ID da tabela depois um Gatilho para alterar o novo valor de ID quando inserirmos o registro.
Vamos abrir um terminal como root no Linux ou o Prompt de comando no Windows.
Abra a ferramenta isql com o comando
# no Linux
isql-fb
Agora vamos criar o banco de dados:
CREATE DATABASE “/home/alex/firebird_data/tutorial2.fdb” user “SYSDBA” password “senha”;
Criamos também a tabela:
CREATE TABLE TESTE_AI(
ID INTEGER NOT NULL PRIMARY KEY,
NOME VARCHAR(50) NOT NULL,
IDADE INTEGER NOT NULL
);
Agora vamos à criação do GENERATOR que controlará o auto incremento de ID.
CREATE GENERATOR GEN_ID_TESTE_AI;
O comando para a criação de Generators é simples:
CREATE GENERATOR NOME_GENERATOR;
Eu costumo usar GEN + Nome do campo + tabela, mas fica a cargo de cada um a escolha deste nome.
Agora vamos criar um Gatilho que vai incrementar o valor do ID.
Antes, vamos alterar o terminador padrão, que é “;” para outro caractere que não será usado no bloco de código do gatilho, no caso vou colocar um “!”. Qualquer outro caractere pode ser usado, mas você deve ter muito cuidado aqui, pois se usar algum que apareça no meio do caminho, seu comando será fechado e todo seu trabalho será perdido.
Usamos o comando SET TERM + o novo caractere que usaremos (no caso o “!”) e fechamos com o caractere terminador atual, no caso o “;”.
SET TERM !;
CREATE TRIGGER T_G_ID_TESTE_AI
FOR TESTE_AI
ACTIVE
BEFORE INSERT
POSITION 0
AS
BEGIN
NEW.ID = GEN_ID(GEN_ID_TESTE_AI, 1);
END!
Nesta primeira linha crio o Gatilho, dando um nome para ele, no caso, usei o T (trigger) + G (porque ele está associado a um Generator), + Campo + Tabela).
CREATE TRIGGER T_G_ID_TESTE_AI
Na segunda linha uso o FOR para mostrar a qual tabela ele está relacionado, no caso TESTE_AI.
FOR TESTE_AI
Digo que quero que este Gatilho esteja ativado.
ACTIVE
Ele será executado antes de Inserir, quando executamos o comando Insert, antes dos dados serem salvos no banco, ele executa este comando.
BEFORE INSERT
Agora digo que ele será o primeiro a ser executado, isto é preciso quando temos mais de um gatilho sendo executado no mesmo ponto de alteração, então se eu tivesse outro gatilho nesta tabela para ser executado em BEFORE INSERT, eu uso este comando para controlar o fluxo de execução. POSITION 0 para o primeiro, POSITION 1 para o segundo, etc...
POSITION 0
Inicio o bloco de comandos
AS
BEGIN
Altero o valor do novo ID para o valor armazenado no Generator incrementando 1 ao mesmo usando GEN_ID.
Veja que aqui nesta linha, eu preciso fechá-la com o “;”, se não tivéssemos alterado o terminador de linha, o comando SQL seria fechado neste momento de forma incompleta e perderíamos todo o trabalho.
NEW.ID = GEN_ID(GEN_ID_TESTE_AI, 1);
Agora fecho o comando, veja que para fechar o comando SQL, agora eu uso o novo terminador que escolhemos no início do comando.
END!
Para não mantermos este terminador para os próximos comandos voltamos o mesmo para o “;”.
SET TERM ;!
Vamos testar o comando inserindo alguns valores:
INSERT INTO TESTE_AI VALUES(NULL, 'TESTE', 20);
INSERT INTO TESTE_AI VALUES(NULL, 'TESTE1', 20);
INSERT INTO TESTE_AI VALUES(NULL, 'TESTE2', 20);
INSERT INTO TESTE_AI VALUES(NULL, 'TESTE3', 20);
INSERT INTO TESTE_AI VALUES(NULL, 'TESTE4', 20);
Agora selecione os valores.
SELECT * FROM TESTE_AI;
Se alguma coisa der errada, tente refazer cada passo, entendendo o porque de cada comando.
Até a próxima.
sexta-feira, 2 de setembro de 2011
Firebird – Criando um banco de dados com a ferramenta isql
A ferramenta de linha de comando isql do Firebird é usada para criação e administração de Bancos de Dados.
Hoje vamos ver como criar um banco de dados, abrir um banco de dados, criar uma tabela e executar alguns comandos básicos em SQL.
Primeiro vamos abrir a ferramenta:
Se você estiver no Linux (no meu caso Ubuntu) abra o terminal e faça o login como root:
sudo su
Agora abra a ferramenta isql com o comando:
/usr/bin/isql-fb
No Windows, abra a ferramenta no prompt de comando, ela fica dentro da pasta bin do Firebird, algo como:
C:\Arquivos de programas\Firebird\Firebird_x_x\bin\isql.exe
Onde Firebird_x_x vai depender da versão, pode ser Firebird_2_1 ou Firebird_2_5, etc...
Com o isql aberto, vamos criar um banco de dados chamado “tutorial.fbd”, no caso do Linux temos que lembrar que o diretório onde este banco de dados será criado, deve ter as permissões necessárias, se você não sabe como fazer isto, clique aqui para ver o tutorial anterior.
Digite o comando:
CREATE DATABASE 'diretorio_destino/tutorial.fbd' user 'usuario_do_firebird' password 'senha_usuario_firebird';
No comando acima temos o comando CREATE DATABASE depois o caminho completo para o banco de dados que queremos criar (um exemplo seria: '/home/usuario/tutorial.fbd' no Linux ou 'C:\tutorial.fbd' no Windows) lembre-se que este comando deve estar entre apóstrofos “ ' ”, depois passamos o usuário com user 'usuario', o nome do usuário deve estar entre apóstrofos (o usuário padrão do Firebird é SYSDBA) e por último a senha com password 'senha do usuario' também entre apóstrofos.
Dois exemplos práticos para este comando são:
No Linux:
SQL > CREATE DATABASE '/home/alex/firebird_data/tutorial.fbd' user 'SYSDBA' password '1234';
Onde '/home/alex/firebird_data' é o diretório de destino, 'tutorial.fbd' o banco de dados, 'SYSDBA' o usuário e '1234' senha do usuário SYSDBA.
No Windows:
SQL > CREATE DATABASE 'C:\tutorial.fbd' user 'SYSDBA' password 'masterkey';
Onde “C:\” é o diretório de destino, 'tutorial.fbd' o banco de dados, 'SYSDBA' o usuário e 'masterkey' senha do usuário SYSDBA.
Agora vamos sair da ferramenta digitando o comando:
QUIT;
Vamos reabrir o isql novamente com o comando anterior:
Linux:
/usr/bin/isql-fb
Windows:
C:\Arquivos de programas\Firebird\Firebird_x_x\bin\isql.exe
Vamos abrir o banco de dados usando os diretórios de exemplo que usei anteriormente com o comando:
Linux:
SQL> CONNECT '/home/alex/firebird_data/tutorial.fbd' user 'alex' password '1234';
Windows:
SQL> CONNECT 'C:\tutorial.fbd' user 'SYSDBA' password 'masterkey';
O comando CONNECT abre o banco de dados, e os argumentos passados para ele, são os mesmo usados no comando CREATE DATABASE, ou seja, caminho completo para o banco de dados, usuário e senha, não se esqueça que os valores devem ser passados entra apóstrofos “ ' ”.
Agora vamos criar uma tabela chamada 'TESTE' com o comando SQL:
SQL > CREATE TABLE TESTE(
CON> ID INTEGER NOT NULL PRIMARY KEY,
CON> NOME VARCHAR(50) NOT NULL,
CON> IDADE INTEGER NOT NULL
CON> );
Veja que enquanto não coloco um ' ; ' o comando não é fechado.
Testem outros comandos para se acostumarem com a ferramenta, como os comandos abaixo:
SQL> SELECT * FROM TESTE;
SQL> INSERT INTO TESTE(ID, NOME, IDADE) VALUES(1, 'TESTE' , 50);
SQL> SELECT SUM(IDADE) FROM TESTE;
Por hoje é isto, espero que vocês tenham aproveitado o tutorial e qualquer dúvida deixe nos comentários que tentarei ajudar.
Até a próxima.
Vídeo com a explicação
Hoje vamos ver como criar um banco de dados, abrir um banco de dados, criar uma tabela e executar alguns comandos básicos em SQL.
Primeiro vamos abrir a ferramenta:
Se você estiver no Linux (no meu caso Ubuntu) abra o terminal e faça o login como root:
sudo su
Agora abra a ferramenta isql com o comando:
/usr/bin/isql-fb
No Windows, abra a ferramenta no prompt de comando, ela fica dentro da pasta bin do Firebird, algo como:
C:\Arquivos de programas\Firebird\Firebird_x_x\bin\isql.exe
Onde Firebird_x_x vai depender da versão, pode ser Firebird_2_1 ou Firebird_2_5, etc...
Com o isql aberto, vamos criar um banco de dados chamado “tutorial.fbd”, no caso do Linux temos que lembrar que o diretório onde este banco de dados será criado, deve ter as permissões necessárias, se você não sabe como fazer isto, clique aqui para ver o tutorial anterior.
Digite o comando:
CREATE DATABASE 'diretorio_destino/tutorial.fbd' user 'usuario_do_firebird' password 'senha_usuario_firebird';
No comando acima temos o comando CREATE DATABASE depois o caminho completo para o banco de dados que queremos criar (um exemplo seria: '/home/usuario/tutorial.fbd' no Linux ou 'C:\tutorial.fbd' no Windows) lembre-se que este comando deve estar entre apóstrofos “ ' ”, depois passamos o usuário com user 'usuario', o nome do usuário deve estar entre apóstrofos (o usuário padrão do Firebird é SYSDBA) e por último a senha com password 'senha do usuario' também entre apóstrofos.
Dois exemplos práticos para este comando são:
No Linux:
SQL > CREATE DATABASE '/home/alex/firebird_data/tutorial.fbd' user 'SYSDBA' password '1234';
Onde '/home/alex/firebird_data' é o diretório de destino, 'tutorial.fbd' o banco de dados, 'SYSDBA' o usuário e '1234' senha do usuário SYSDBA.
No Windows:
SQL > CREATE DATABASE 'C:\tutorial.fbd' user 'SYSDBA' password 'masterkey';
Onde “C:\” é o diretório de destino, 'tutorial.fbd' o banco de dados, 'SYSDBA' o usuário e 'masterkey' senha do usuário SYSDBA.
Agora vamos sair da ferramenta digitando o comando:
QUIT;
Vamos reabrir o isql novamente com o comando anterior:
Linux:
/usr/bin/isql-fb
Windows:
C:\Arquivos de programas\Firebird\Firebird_x_x\bin\isql.exe
Vamos abrir o banco de dados usando os diretórios de exemplo que usei anteriormente com o comando:
Linux:
SQL> CONNECT '/home/alex/firebird_data/tutorial.fbd' user 'alex' password '1234';
Windows:
SQL> CONNECT 'C:\tutorial.fbd' user 'SYSDBA' password 'masterkey';
O comando CONNECT abre o banco de dados, e os argumentos passados para ele, são os mesmo usados no comando CREATE DATABASE, ou seja, caminho completo para o banco de dados, usuário e senha, não se esqueça que os valores devem ser passados entra apóstrofos “ ' ”.
Agora vamos criar uma tabela chamada 'TESTE' com o comando SQL:
SQL > CREATE TABLE TESTE(
CON> ID INTEGER NOT NULL PRIMARY KEY,
CON> NOME VARCHAR(50) NOT NULL,
CON> IDADE INTEGER NOT NULL
CON> );
Veja que enquanto não coloco um ' ; ' o comando não é fechado.
Testem outros comandos para se acostumarem com a ferramenta, como os comandos abaixo:
SQL> SELECT * FROM TESTE;
SQL> INSERT INTO TESTE(ID, NOME, IDADE) VALUES(1, 'TESTE' , 50);
SQL> SELECT SUM(IDADE) FROM TESTE;
Por hoje é isto, espero que vocês tenham aproveitado o tutorial e qualquer dúvida deixe nos comentários que tentarei ajudar.
Até a próxima.
Vídeo com a explicação
segunda-feira, 29 de agosto de 2011
Instalando e configurando Firebird 2.5 no Ubuntu 11.04
Neste tutorial vou explicar como instalar e configurar o Firebird 2.5 no Ubuntu 11.04
Abra o gerenciador de pacotes Synaptic
Sistema → Administração → Gerenciador de pacotes Synaptic
ou
sudo synaptic
Digite sua senha
No “filtro rápido”, digite firebird
Marque para instalação o pacote
firebird2.5-super
Abrirá um diálogo com os outros pacotes necessário, clique em marcar.
Na janela do Synaptic clique em aplicar e no diálogo que se abre, também clique em aplicar.
Após as alterações terem sido feitas, feche o Synaptic e abra um terminal.
Digite o comando abaixo e sua senha logo em seguida para usar a conta root...
sudo su
Agora vamos reconfigurar o firebird, nesta etapa iniciaremos o servidor e configuraremos uma senha para o usuário SYSDBA.
Digite o comando abaixo:
dpkg-reconfigure firebird2.5-super
Nesta tela selecione sim para ativar o servidor Firebird
Nesta tela selecione OK para configurar a senha do SYSDBA
Digite a nova senha:
Você voltará ao terminal e serão exibidas as mensagens a seguir.
Para iniciarmos o servidor Firebird 2.5 usamos o comando:
sudo /etc/init.d/firebird2.5-super start
Para pararmos o servidor usamos o comando:
sudo /etc/init.d/firebird2.5-super stop
Para reiniciar o servidor usamos o comando:
sudo /etc/init.d/firebird2.5-super restart
Para criarmos novos bancos de dados, o diretório pré configurado com permissões para o firebird é:
/var/lib/firebird/2.5/system
Se vocês tentarem criar um banco de dados em um diretório sem as permissões para o firebird dará erro.
Uma alternativa é criar uma pasta onde vocês querem salvar os arquivos de banco de dados do firebird e dar as devidas permissões.
Um jeito bem simples é o seguinte:
Crie uma pasta onde vocês querem criar o banco de dados, no meu caso, vou criar um diretório no seguinte caminho, /home/alex/firebird_data
Agora vou abrir o Nautilus (o gerenciador de arquivos que estou usando aqui) como root, com o comando:
sudo nautilus
Vou até o local onde criei meu diretório firebird_data e clicando com o botão direito do mouse seleciono Propriedades.
No diálogo que se abre, vá até a aba Permissões e altere os valores como na figura:
Feche o diálogo, o Nautilus e o terminal.
Pronto, esta pasta já está apta para receber bancos de dados do Firebird.
Basicamente, a instalação e configuração do firebird no Ubuntu é isto, se vocês optarem por outra versão do firebird, basta alterar os comandos e caminhos para os mesmos, como por exemplo em “sudo /etc/init.d/firebird2.1-super start” ou “sudo /etc/init.d/firebird2.5-classic start”, etc...
Depois darei um exemplo de como criar um banco de dados no firebird usando o flamerobin e o isql.
Espero que tenha ajudado nesta parte e qualquer dúvida deixem nos comentários que tentarei ajudar.
Até a próxima.
Assinar:
Postagens (Atom)












