Java PHP Javascript C/C++

A Utilização do JDBC e a Conexão com Drivers de Banco de Dados Java

    Um aplicativo de banco de dados relacional na liguagem Java inclui em seus códigos fontes e arquivos binários um conjunto de microprogramas JDBC que inclui os drivers de um banco de dados ou database.   Os arquivos apresentam componentes básicos e essenciais da linguagem java, tipos de dados, a estrutura das tabelas e suas palavras reservadas como SELECT, INSERT, DELETE, FROM, INTO, VALUES, CREATE DATABASE, ALTER TABLE, JOIN, UPDATE, ABS, CHAR, DATE, FLOAT, DOUBLE, MIN, MAX, SUM, VARCHAR, BLOB, CLOB entre outras estando codificadas seguindo uma especificação como o padrão SQL92 e suas posteriores revisões.

    As bibliotecas java-DB ou Derby apresentam as últimas revisões da SQL92 os arquivos java binários composto por arquivos com a extensão .class agrupados em um arquivo jar tendo como estrutura de importação java.sql.*.    Um exemplo de declaração geralmente utilizável é descrita:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
    

    O núcleo do JDBC representado pelo package java.sql implementa as classes, interfaces e métodos tendo como principais : java.sql.Driver, java.sql.DriverManager, java.sql.Connection, java.sql.DatabaseMetaData, java.sql.Statement, java.sql.PrepareStatement e java.sql.ResultSet.      A classe java.sql.Driver é a responsável pelo carregamento do driver JDBC ela utilizada em conjunto com o java.sql.DriverManager criar a conexão através de um protocolo com um banco de dados, os métodos getDriver() e getConnection() do DriverManager pode receber dados de caracteres contendo a URL de conexão , usuário senha opções de criptografia corresponde a algumas das opções que podem ser configuradas no processo de conexão com um database.

    A escrita correta ou sitaxe da URL de conexão com um banco de dados inclui um protocolo, um subprotocolo, nome do database ou do banco de dados e atributos com a seguinte formação sendo exemplificado para o driver db-derby ou java-DB:

jdbc:derby: [subprotocolo:] [nomeBancoDados] [;atributos] * 
  

     A expressão derby no exemplo anterior representa no JDBC o subprotocolo a parte entre colchetes que deve ser complementada indica aonde deve ser feita a procura pela base de dados em um diretório, um caminho de classe ou em um arquivo jar para este último não é necessário a inclusão do classpath , o termo nomeBancoDados deve ser escrito inicializado pela barra de diretórios / pois são informados de modo relativo ao caminho da classe, jar requer um elemento adicional [caminhoArquivo] escrito antes do [nomeBancoDados] este penúltimo termo representa o caminho para o arquivo .jar ou .zip que contém o banco de dados.

    O exemplo de código de programa em java exibirá um trecho que pode ser utilizado em um aplicativo de banco de dados completo ou em um programa console a configuração para o derby ou java-db a combinação do driver e do subprotocolo tem a seguinte forma :
org.apache.derby.jdbc.EmbeddedDriver jdbc:derby:estoquedados;bootPassword=senha;create=true|false neste exemplo o arquivo de banco de dados está instalado em um subdiretório no disco local de trabalho aonde o programa é inicialização pela linha de comando do programa set CLASSPATH=.;%DERBY_HOME%\lib\derby.jar e java Estoquedados.

    Alguns desenvolvedores de drivers de banco de dados na linguagem de programação que utilizam podendo ser inclusive diferente do java tem seus drivers convertido para esta podendo portanto substituir os do derby ou java-db.    Nos escolhemos o MySQL Server, SQLite, PostgreSQL e apresentaremos a configuração com os seus arquivos originars .jar disponíveis para a conexão com um banco de dados exemplo inclusive, há um detalhe importante pois os respectivos banco de dados devem ser montados a partir de uma estrutura da escrita do código com sintaxe distinta além da necessidade da instalação de seus programas server em uma estação de trabalho para a montagem dos respectivos banco de dados.  Uma estrutura de tabela será utilizada sendo apresentada nas plataformas citadas, uma fonte de dados única é utilizada os tipos de dados das tabelas devem ser os mesmos para que um mesmo código fonte da interface gráfica ou console possa ler sem erros a informação do banco de dados escrita sob diferentes drivers.

    Os arquivos zipados disponíveis na internet para download pelos seus respectivos distribuidores dos drivers JDBC (1.3, 1.4) que nós utilizamos para este exemplo tem os seguintes nomes de arquivo: java-DB e Derby derby.jar, MySQL mysql-2_0_12.jar, SQLite sqlite-jdbc-3.30.1.jar e PostegreSQL jdbc-postgresql.jar.    Estes arquivos muitas vezes estão incluídos em conjunto com outros como arquivos binários, bibliotecas dinâmicas .dll .o .a e para desenvolvimento de aplicativos apresentando versões para varios sistemas operacional.

  
     
import java.lang.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; import java.applet.*; import java.net.*; import javax.swing.JDialog; /* As bibliotecas java.sql.* compreendem a API do JDBC da progamacao da linguagem SQL em java */ import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Estoquedados extends JDialog{ public Connection conio = null; public Statement sta = null; public ResultSet resl = null; public String qry; public static void main(String[] args) throws Exception { /* java-db e Derby */ String driver = "org.apache.derby.jdbc.EmbeddedDriver"; String protocol = "jdbc:derby:"; /* MySQL String driver = "org.gjt.mm.mysql.Driver"; String protocol = "jdbc.mysql"; */ /* SQLite String driver = "org.xerial.sqlite-jdbc"; String protocol = "jdbc.sqlite"; */ /* PostgreSQL String driver = "org.postgresql.Driver"; String protocol = "jdbc.postgresql"; */ /* As informacoes de erro System.out.println imprime na saida da tela do console * e a segunda JOptionPane.showMessageDialog por uma janela de dialogo e seu codigo * sera visualizado em uma caixa de dialogo */ String nomeBancoDados = "estoquedados;bootPassword=12345678"; try { Class.forName(driver).newInstance(); // System.out.println("Carregado o driver Derby apropriado "); JOptionPane.showMessageDialog(null, "Carregado o driver Derby apropriado ", "Caixa de Dialogo", 1); } catch (Exception erro_driver) { // System.out.println("Nao foi possivel carregar o driver JDBC :" + driver); JOptionPane.showMessageDialog(null, "Nao foi possivel carregar o driver JDBC ", "Caixa de Dialogo", 1); System.exit(0); } /* Os registros sao selecionados e impressos na tela console do programa * quando nao houver erro de processamento */ try{ conio = DriverManager.getConnection(protocol + nomeBancoDados + ";create=false"); }catch (Exception error_conexao){ // System.out.println("Nao foi possivel realizar a conexao com o database : " + nomeBancoDados); JOptionPane.showMessageDialog(null, "Nao foi possivel realizar a conexao com o database ", + nomeBancoDados +"Caixa de Dialogo", 1); } try{ sta = conio.createStatement(); qry = "SELECT * FROM estoquedados ORDER BY Id ASC"; resl = sta.executeQuery(qry); System.println("Id | Codigo Barras | Nome Produto | Descricao | Data Entrada | Hora Entrada |" + "Data Vencimento | Quantidade total | Quantidade estoque |" + "Funcionario | Observacao" ); while(resl.next()){ System.println(resl.getString("Id") ); System.println(resl.getString("codigo_barras") ); System.println(resl.getString("nome_produto") ); System.println(resl.getString("descricao") ); System.println(resl.getDate("data_entrada") ); System.println(resl.getTime("hora_entrada") ); System.println(resl.getDate("data_vencimento") ); System.println(resl.getInt("quantidade_total") ); System.println(resl.getInt("quantidade_em_estoque") ); System.println(resl.getString("funcionario") ); System.println(resl.getString("observacao") ); System.println("\n"); } }catch(Exception error_resl){ // System.out.println("Houve um erro no processamento na selecao dos registros do database "+ error_resl); JOptionPane.showMessageDialog(null, "Houve um erro no processamento na selecao dos registros do database ", +"Caixa de Dialogo", 1); } } }

    O código de programa console java anterior tem uma declaração de import dos arquivo de classe necessários, uma instância do driver de banco de dados é inicializada Class.forName(driver).newInstance(); a inicialização da conexão com o banco de dados e feita em DriverManager.getConnection(jdbc:derby:estoquedados;bootPassword=12345678;create=false;)
o subprotocolo, a base da dados e os atributos são utilizados para a conexão com o estoquedados instalado em uma pasta no diretório raiz do aplicativo, o atributo bootPassword e o banco de dados estando criptografado utiliza uma senha informada na construção do database pelo aplicativo ij do programa server java-de ou Derby
CONNECT 'jdbc:derby:estoquedados;create=true;dataEncryption=true;bootPassword=12345678'; para a construção da tabela create=true e as posteriores conexões de inclusão exclusão e consulta dos registros create=false a estrutura restante do programa consiste na utilização dos métodos Connection, Statement e ResultSet que realiza a seleção dos registro do database e exibem o resultado na tela console imprimindo uma linha de registro de dados.




SQL estruturas Java-DB e Derby, MySQL, SQlite, PostreSQL

    A estrutura das tabelas montadas individualmente para os programa server de banco de dados mencionados nos parágrafos anteriores apresentam sintaxe própria para o seu processamento e seguem o padrão SQL92 estes programas estão disponíveis para download na internet como opensource, distribuição gratuita com um contrato para a sua utilização e versões comerciais.

    O código do programa inclui a construção em String driver e String protocol para a utilização deste mesmo código fonte escrito em java para os drivers apresentados na tabela anterior java-db e Derby, MySQL Server, SQLite e PostgreSQL outros drivers para os programas server de banco de dados comerciais apresentam também os seus em java oferecendo a mesma conectividade apresentada no exemplo.   O banco de dados estoquedados pode ser acessado instalado em um servidor de rede local ou internet havendo uma mudança na escrita da informação em String driver e String protocol as operações de inclusão, exclusão e consulta contam com outras funções e métodos disponíveis no JDBC inclusive não mostradas neste exemplo que controlam os acessos simultâneos, tempo de duração e conexões locahost, http e https incluídos como [subprotocolo], lista de usuários entre outras funções de um aplicativo cliente e servidor.  A inicialização do arquivo Estoquedados.class por java.exe necessitará da inclusão de um dos arquivos derby.jar, mysql-2_0_12.jar, sqlite-jdbc-3.30.1.jar e jdbc-postgresql.jar na variável do caminho classpath pela instalação em uma pasta local intena ao programa ou pela configuração das variáveis de ambiente.