Criando uma aplicao com acesso a Banco de Dados no NetBeans
O NetBeans no possui ferramentas que permitam criar visualmente componentes, em um
programa, para manipular os dados de uma tabela, a exemplo dos existentes em outras ferramentas, em outras Linguagens de programao. Introduo O NetBeans no possui ferramentas que permitam criar visualmente componentes, em um programa, para manipular os dados de uma tabela, a exemplo dos existentes em outras ferramentas, em outras Linguagens de programao. Para trabalhar com Banco de Dados preciso faz-lo via cdigo, que dever ser inserido dentro do mtodo actionPerformed de um JButton. Cria-se o Formulrio contendo os componentes visuais para mostrar, e manipular, os dados da tabela do Banco de Dados. Dentre estes componentes esto os botes ou menus, os quais sero os responsveis por executar os cdigos para realizar uma determinada operao, consulta, insero, alterao ou excluso em um BD. Depois de criada a parte visual, devem ser implementados os cdigos nos botes/menus. Podemos construir uma aplicao usando o seguinte roteiro: 1) Importar o pacote java.sql: import java.sql.*; 2) Carregar o driver de acesso ao BD: Atravs da Instalao de uma fonte JDBC/ODBC em plataforma Windows: Class.forName(sun.jdbc.odbc.JdbcObdcDriver); Atravs do driver especfico do banco. Ex para o MySQL: Class.forName(com.mysql.jdbc.Driver); 3) Obter uma conexo com o BD: (Ex: para um Banco de Dados Access: IJPlanetas.mdb, atravs de uma fonte JDBC/ODBC) Connection conexo = DriverManager.getConnection(jdbc:odbc:IJPlanetas); 4) Por meio da conexo realizada, devemos obter uma instncia de um objeto Statement, PreparedStatement ou CallableStatement, para passar comandos SQL ao BD: Statement stmt= conexo.createStatement(); 5) Criar objetos para executar operaes no BD (execute (String), executeQuery (String), ExecuteUpdate(String), executeBatch()): int reg =stmt.executeUpdate(delete from planeta where nome=Maria); ResultSet rs = stmt.executeQuery(select nome from planeta); 6) Algumas operaes retornam resultados do BD (um objeto Resultset conjunto de registros), os quais devemos exibir ou processar: while( rs.next() ) { //move o curso de registros String Nome=rs.getString(nome); // obtm o valor do campo nome da tabela System.out.println(Nome); } 7) Quando no precisar mais dos objetos obtidos, libere-os: rs.close(); stmt.close(); 8) Aps todas as operaes encerre a conexo com BD: conexo.close(); Exemplo Completo Crie uma aplicao para cadastrar a Matricula e os Nomes dos Funcionrios de uma Empresa, em um Banco de Dados Access, atravs de uma fonte de dados JDBC/ODBC: Criar um novo Project: clique no menu File >> New Project >> selecione General >> Java Applicatin >> Next >> na prxima janela digite o no do Projeto: ExemploConexaoBD, clique em Finish. Criar um JForm contendo os componentes visuais: Clique no Menu File >> New File >> Selecione Java GUI Forms >> JFrame Forms >> clique no boto Next. Na janela que se abre, no campo Name, digite SistCadFunc e clique no Boto Finish. Insira os seguintes componentes: dois JLabel (Nome e Matricula), dois JTextField e um JButton (Salvar).
Figura 1 - Tela SistCadFunc. A parte visual esta construda, falta o cdigo para salvar os dados. Abra o Access e crie um BD (BDCadastro) com uma Tabela (TabFicha) com os campos: Matricula (Tipo Numrico/Chave Primria) e Nome Tipo Texto. Criar a fonte de dados JDBC/ODBC: No windows, abra o Painel de Controle >> Ferramentas Administrativas >> Fontes de Dados ODBC >> clique no Boto Add >> Selecione o Driver p/ BD Access >> clique no boto Concluir >> no campo Nome da Fonte de Dados digite BDCadastro >> clique no boto Selecionar >> Procure o BD criado (BDCadastro) e clique no Boto OK >> OK >> OK.
Figura 2 - Tela de Abertura da Fonte de Dados ODBC.
Figura 3 - Tela de Seleo do Driver.
Figura 4 Tela de Configurao do Driver.
Figura 5 Tela de Seleo do Banco Access. Criado o BD e a Fonte ODBC, volte para a sua aplicao no NetBeans e clique com o boto direito do mouse no JButton (Salvar), selecione Event >> Action >> actionPerformed, para codificar a conexo: Depois de private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {, digite: try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//Driver JDBC Fonte de Dados ODBC //conecta no BD, as aspas vazias representam o Login: usurio e senha. Connection con = DriverManager.getConnection("jdbc:odbc:BDCadastro","",""); Statement stmt = con.createStatement(); //objeto comdo sql int cadMat=Integer.parseInt( jTextField1.getText() ); String cadNome = jTextField2.getText(); //obtm nome digitado stmt.executeUpdate("insert into TabFicha (Matricula,Nome) values ('" + cadMat + "','" + cadNome + "')" ); JOptionPane.showMessageDialog( this, " Dados Salvos! "); con.close(); // fecha conexo com BD } catch( SQLException e){ //trata os erros SQL JOptionPane.showMessageDialog(this, "Erro Cmdo SQL " + e.getMessage() ); } catch( ClassNotFoundException e){ //trata erros de conexo JOptionPane.showMessageDialog( this, " Driver no encontrado " ); } Importar os pacotes sql e swing do Java - antes de: public class SistCadFunc... digite: import java.sql.*; import javax.swing.*; Compile (F9) Execute (Shift+F6). Realizando operaes de Consulta, Alterao e Excluso em BD: Insira trs Botes para executar as operaes restantes no Banco de Dados (Consulta, Alterao e Excluso, atravs da Matricula), um JLabel, para exibir o Texto Matricula para Consulta/Excluso, supondo que estas operaes sero feitas atravs do campo Matricula, e insira tambm um JTextField para usurio poder digitar a Matricula, ou crie um novo Form contendo os JLabel, JTextField , e JButton, sendo que o mesmo dever ser chamado por outro Form atravs de um JMenurBar. Supondo que foram inseridos os novos componentes da seguinte forma:
Figura 6 Tela SistCadFunc atualizada. Basta clicar com o boto direito do mouse sobre o boto desejado e inserir o respectivo cdigo para a respectiva operao: Operao de Consulta (Atravs da Matricula digitada pelo usurio no jTextField3) boolean consulta=true; try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:BDCadastro","",""); Statement stmt= con.createStatement();//objeto comdo sql int ConsMatricula= Integer.parseInt(jTextField3.getText()); ResultSet RS= stmt.executeQuery("Select * from TabFicha where Matricula=" + ConsMatricula ); while (RS.next()){ //Exibir os valores retornados na consulta nos jTextField int Mat= RS.getInt("Matricula");//Pega a Matricula jTextField1.setText(String.valueOf(Mat)); //converte Inteiro para String. jTextField2.setText(RS.getString("Nome")); // Pega o Nome consulta=false; JOptionPane.showMessageDialog(this,"Dados Encontrados!"); } if (consulta) JOptionPane.showMessageDialog(this,"Dados No Encontrados!"); RS.close(); stmt.close(); con.close(); //fecha conexo com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver no encontrado"); }
Alterar: (Realiza alterao dos dados atravs da Matricula informada no jTextField3) try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:BDCadastro","",""); Statement stmt= con.createStatement();//objeto comdo sql int consMatricula= Integer.parseInt(jTextField3.getText()); int cadMat=Integer.parseInt(jTextField1.getText()); String cadNome=jTextField2.getText(); int registro = stmt.executeUpdate("update TabFicha set Nome='" + cadNome + "', Matricula=" + cadMat + " where Matricula=" + consMatricula); if (registro!=0) JOptionPane.showMessageDialog(this,"Dados Alterados!"); else JOptionPane.showMessageDialog(this,"Dados No Alterados!"); stmt.close(); con.close(); //fecha conexo com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver no encontrado"); } Excluir: (Realiza excluso do registro atravs da Matricula informada no jTextField3) try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:BDCadastro","",""); Statement stmt= con.createStatement();//objeto comdo sql int excMatricula= Integer.parseInt(jTextField3.getText()); int registro=stmt.executeUpdate("delete from TabFicha where Matricula=" + excMatricula); if (registro!=0) JOptionPane.showMessageDialog(this,"Dados Excluidos!"); else JOptionPane.showMessageDialog(this,"Dados no Excluidos!"); stmt.close(); jTextField3.setText(); //Limpa a caixa de texto con.close(); //fecha conexo com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver no encontrado"); } Compile Execute OBS: Como os comandos de conexo com o Banco de Dados esto se repetido, os mesmos poderiam ser implementados dentro do mtodo construtor ou dentro de um mtodo e serem executados atravs de uma chamada deste mtodo quando se desejar estabelecer uma conexo com o banco de dados para realizar uma determinada operao em suas tabelas, diminuindo a quantidade de cdigo a ser digitado. Jos Valney Melo Barbalho (jvmb@ibest.com.br), MBA em GSI.
Leia mais em: Criando uma aplicao com acesso a Banco de Dados no NetBeans http://www.devmedia.com.br/criando-uma-aplicacao-com-acesso-a-banco-de-dados-no- netbeans/5122#ixzz2yt74tSjy