Infra - Linux
Criando um aplicação em Shell-Script acessando um Bco Interbase/Firebird
Neste tutorial iremos criar um aplicação de cadastro de cliente usando Shell-Script com uma base de dados Interbase/Firebird.
por Alessandro de Oliveira Faria
CRIANDO O BCO DE DADOS:
Para instalação do Interbase ou firebird, o link http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=180 explica alguns macetes e conceitos de intalação do mesmo. Portanto partirei do principio que o Interbase/Firebird esta devidamente configurado.
Iremos criar um banco de dados chamado BCO.GDB com apenas uma tabela para efeito de demonstação. Usaremos o programa isql para efetuar esta operação.
Neste link existem todos os arquivo citado neste tutorial.
Antes de criarmos o BCO, vamos gerar uma arquivo chamado METADATA.TXT com o seguinte conteudo:
---------------------------------[ METADATA.TXT ]--------------------------------------------- SET SQL DIALECT 1; CREATE DATABASE "/rede/servdad/BCO.GDB" USER "SYSDBA" PASSWORD "masterkey" PAGE_SIZE 1024; CREATE TABLE TAB_CLI_001 ( CODIGO INTEGER DEFAULT 1 NOT NULL, NOME VARCHAR(60), FON1 VARCHAR(15), FON2 VARCHAR(15), FAX VARCHAR(15), TEL VARCHAR(40), BAIRRO VARCHAR(25), ENDE VARCHAR(40) ); ---------------------------------[ FIM ]---------------------------------------------
O arquivo acima, não passa de um script para o interpretador SQL do Banco.
Agora vamos realmente começar o processo de criação do Bco:
[root@486 interbase]# /opt/interbase/bin/isql
Este comando inicia o interpretador SQL.
O comando IN explica ao interpretado que devemos importar o arquivo recebido como parametro e executar as instruções SQL contida no mesmo.
Use CONNECT or CREATE DATABASE to specify a database. SQL> IN METADATA.TXT; SQL> QUIT;
Se tudo foi concluido com sucesso, neste passo criamos um banco de dados vazio. Para confirmar a sua criação verifique o conteudo no diretorio indicado com o comando ls:
[root@486 interbase]# ls /rede/servdad
Vamos brincar um pouco com os comando básicos do SQL:
A linha abaixo inicia o interpretador SQL e abre o banco de dados criado:
[root@486 interbase]# isql /rede/servdad/BCO.GDB -u SYSDBA -p masterkey Database: /rede/servdad/BCO.GDB, User: SYSDBA
Exibindo algumas informações do Banco de dados:
SQL> SHOW DATABASE; Database: /rede/servdad/BCO.GDB Owner: SYSDBA PAGE_SIZE 1024 Number of DB pages allocated = 242 Sweep interval = 20000 Forced Writes are OFF Transaction - oldest = 10 Transaction - oldest active = 11 Transaction - oldest snapshot = 8 Transaction - Next = 16 Default Character set: NONE
Mostrando as tabelas existente no Banco:
SQL> SHOW TABLE; TAB_CLI_001
Exibindo os campos da tabela:
SQL> SHOW TABLE TAB_CLI_001; CODIGO INTEGER Not Null DEFAULT 1 NOME VARCHAR(60) Nullable FON1 VARCHAR(15) Nullable FON2 VARCHAR(15) Nullable FAX VARCHAR(15) Nullable TEL VARCHAR(40) Nullable BAIRRO VARCHAR(25) Nullable ENDE VARCHAR(40) Nullable SQL>
Inserindo um registro:
SQL> INSERT INTO TAB_CLI_001 VALUES (1,"ALESSANDRO DE OLIVEIRA FARIA","(17)3343 3020","(17) 3343 3022","","","CENTRO","RUA DUQUE DE CAXIAS, 1107");Exibindo o conteudo da Tabela:
SQL> SELECT CODIGO, NOME FROM TAB_CLI_001; CODIGO NOME ============ ============================================================ 1 ALESSANDRO DE OLIVEIRA FARIA SQL> COMMIT; SQL>
Até aqui temos o Banco de dados criado em perfeito funcionamento.
CRIANDO A APLICAÇÃO:
Antes de explicar o conceito/funcionamento vamos criar os arquivos segundários:
Vamos primeiro criar o arquivo sql01 cujo conteu é um comando SQL para localizar o maior codigo cadastrado:
---------------------------------[ sql01 ]--------------------------------------- SELECT "*" || MAX(CODIGO) FROM TAB_CLI_001; EXIT; ---------------------------------[ FIM ]------------------------------------------
O próximo arquivo a ser criado, é o execsql01, que simplesmente executa a linha SQL do arquivo sql01:
-------------------------------[ execsql01 ]------------------------------------- isql /rede/servdad/BCO.GDB -u SYSDBA -p masterkey -i sql01 | grep "*" | cut -c2- -------------------------------[ FIM ]---------------------------------------------
A APLICAÇÃO EM SHELL-SCRIPT:
Crie um arquivo chamado cadcli com o seguinte conteúdo e sem a numeração de linhas (Ressalto que todos estes arquivos se encontram no link mencionado no inicio do tutorial):
-----------------------------[ cadcli ]--------------------------------------- 1:mCODI=`./execsql01` 2:mCODI=`expr $mCODI + 1` 3: 4:while [ $mCODI -gt 0 ] 5:do 6: clear 7: 8: tput sgr0 9: tput cup 23 0 ; echo "MSG:..........................................................................." 10: tput cup 17 1 ; echo "------------------- Informacoes do ultimo cadastro efetuado. ------------------" 11: tput cup 19 1 ; echo "CODIGO..: $mCODI" 12: tput cup 21 1 ; echo "NOME....: $mNOME" 13: 14: mRESP="S" 15: mNOME="..................................................." 16: mENDE="........................................" 17: mBAIR="........................." 18: mTELE="........................................" 19: mFON1="..............." 20: mFON2="..............." 21: mFAXS="..............." 22: 23: tput cup 0 0 ;echo "NETI TECNOLOGIA - Cadastro de Cliente - `date`" 24: tput cup 1 0 ; echo "==========================================================================" 25: tput cup 3 1 ; echo "CODIGO..: Sugerido:($mCODI)" 26: tput cup 5 1 ; echo "NOME....: $mNOME" 27: tput cup 7 1 ; echo "ENDERECO: $mENDE" 28: tput cup 9 1 ; echo "BAIRRO..: $mBAIR" 29: tput cup 11 1 ; echo "TELEFONE: $mTELE" 30: tput cup 12 9 ; echo ": $mFON1" 31: tput cup 13 9 ; echo ": $mFON2" 32: tput cup 15 1 ; echo "FAX.....: $mFAXS" 33: 34: tput bold 35: tput cup 3 11 ; read mCODI 36: if [ $mCODI = "FIM" ] 37: then 38: exit 39: fi 40: tput cup 5 11 ; read mNOME 41: tput cup 7 11 ; read mENDE 42: tput cup 9 11 ; read mBAIR 43: tput cup 11 11 ; read mTELE 44: tput cup 12 11 ; read mFON1 45: tput cup 13 11 ; read mFON2 46: tput cup 15 11 ; read mFAXS 47: 48: tput cup 23 4 ; echo -e "CONFIRMA A OPERACAO? \c" 49: read mRESP 50: 51: tput sgr0 52: if [ $mRESP = S ] 53: then 54: echo "INSERT INTO TAB_CLI_001 VALUES ($mCODI,"$mNOME","$mFON1","$mFON2","$mFAXS","$mTELE","$mBAIR","$mENDE");" | isql /rede/servdad/BCO.GDB -u SYSDBA -p masterkey> /dev/null 55: mCODI=`expr $mCODI + 1` 56: fi 57:done -----------------------------[ FIM ]-------------------------------------------
salve este arquivo com o nome cadcli e de permissões de execução para o mesmo:
[root@486 interbase]# chmod 770 cadcli
Agora para executa-lo para digitar:
[root@486 interbase]#./cadcli
ENTENDENDO O CODIGO EM SHELL:
As linhas 1 e 2 executa o sql que retorna o maior codigo cadastro e incrementa o valor 1 no resultado:
mCODI=`./execsql01` mCODI=`expr $mCODI + 1`
Entre a linha 4 e 33 desenhamos toda a tela inclusive imprimindo o codigo sugestivo e declaramos todas as variaveis referente ao cadastro.
Na linha 33 trocamos o atributos da fonte do terminal texto para bold.
Já na linha 34 pegamos o codigo do cliente informado via teclado e o armazenamos na variavel mCODI.
As linhas 36 a 39 define se a aplicação deve terminar ou proceder com o cadastro, que toma a decisao digitando a string FIM no campo código.
Já na linha 40 a 46 os dados são informados e armazenados nas respectivas variáveis.
Nas linhas 48 a 56 pergunta se o usuario confirma a inclusão, assim sendo os dados digitando são incluido no banco de dados, caso contrário o mesmo é descartado voltando para um nova inclusão.
Acho que este documento mostrou o potencial dos comandos Shell junto ao um Banco de Dados Free e poderoso.
- Login automático com SSH e Automatização da instalação (deploy) e atualização de sites com GitLinux
- Extensão Sun Presentation Minimizer para Broffice.ORGLinux
- Otimização de Desempenho em sistemas GNU/LinuxLinux
- Hardware para sistemas GNU/Linux - Dicas de Desempenho - Parte 3Hardware
- Hardware para sistemas GNU/Linux - Dicas de Desempenho - Parte 2Hardware