Acessando banco de dados em Java (PARTE 1)

Java

09/04/2009

Uma funcionalidade essencial em qualquer sistema é a habilidade para comunicar-se com um repositório de dados. Podemos definir repositório de dados de várias maneiras, por exemplo, como um pool de objetos de negócio num ORB ou um banco de dados. Bancos de dados constituem o tipo mais comum de repositório. Java dispõe de uma API para acessar repositórios de dados: a <a href="https://www.devmedia.com.br/curso/introducao-ao-jdbc/190" target="_blank">Java DataBase Connectivity API ou JDBC API</a>. A JDBC implementa em Java a funcionalidade definida pelo padrão SQL Call Level Interface ou SQLCLI. Um outro exemplo de API que implementa o SQL Call Level Interface é o popularíssimo ODBC das plataformas Wintel. A maioria dos fornecedores de bancos de dados oferece uma implementação particular de SQLCLI. A vantagem de JDBC é a portabilidade da aplicação cliente, inerente da linguagem Java. A especificação corrente da JDBC API é a 2.1. A JDBC compreende uma especificação para ambos: os desenvolvedores de drivers JDBC e os desenvolvedores de aplicações clientes que precisem acessar bancos de dados em Java. Estaremos dando uma olhada no desenvolvimento de aplicações em Java, então, é uma boa idéia começar com o suporte de dados. Existem 4 tipos de diferentes de drivers JDBC (para uma lista de fornecedores por especificação e tipo, vide http://www.javasoft.com/products/jdbc/drivers.html ): - Uma vez que ODBC é uma especificação padrão do mundo Wintel, o tipo 1 é um driver de ponte entre Java e ODBC. O driver de ponte mais conhecido é o fornecido pela Sun o JDBC-ODBC bridge. Este tipo de driver não é portável, pois depende de chamadas a funções de ODBC implementadas em linguagem C e compiladas para Wintel, ou outra plataforma ODBC compatível, as chamadas funções nativas. - O driver tipo 2 é implementado parcialmente em Java e parcialmente através de funções nativas que implementam alguma API específica do fornecedor de banco de dados. Este tipo faz o que se chama de wrap-out, ou seja, provê uma interface Java para uma API nativa não-Java. - O tipo 3 é um driver totalmente Java que se comunica com algum tipo de middleware que então se comunica com o banco de dados - O tipo 4 é um driver totalmente Java que vai diretamente ao banco de dados. Numa próxima parte veremos ainda um driver gratuito que permite acessar bancos de dados que ofereçam suporte apenas ao Bridge (tipo 1) via rede. Veremos a seguir como acessar um banco de dados através de JDBC. Nosso cenário básico é uma pequena aplicação de controle dos meus CDs (clássica !) implementada em algum xBase compatível. Em próximos exemplos iremos utilizar outros bancos de dados. Para utilizarmos a JDBC num programa em Java, precisamos declarar o pacote que contém a JDBC API: [b]Acessando bancos de dados em JDBC[/b]
import java.sql.*; 
A primeira coisa a fazer é estabelecer uma conexão com o banco de dados. Fazemos isso em dois passos: primeiro carregamos o driver para o banco de dados na JVM da aplicação (1). Uma vez carregado, o driver se registra para o DriverManager e está disponível para a aplicação. Utilizamos então a classe DriverManager para abrir uma conexão com o banco de dados (2). A interface Connection designa um objeto, no caso con, para receber a conexão estabelecida:
   try //A captura de exceções SQLException em Java é obrigatória para usarmos JDBC. 
   {
       // Este é um dos meios para registrar um driver 
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance();
       
       // Registrado o driver, vamos estabelecer uma conexão
       Connection con = DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha");
   }
   catch(SQLException e)
   {
       // se houve algum erro, uma exceção é gerada para informar o erro 
       e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
   }
Estabelecida a conexão, podemos executar comandos SQL para o banco de dados. Vejamos como realizar uma consulta sobre o título, numero de faixas e o artista de cada CD no banco de dados. Podemos usar 3 interfaces para executar comandos SQL no banco de dados. A primeira delas é a interface Statement, que permite a execução dos comandos fundamentais de SQL ([b]SELECT[/b], [b]INSERT[/b], [b]UPDATE [/b]ou [b]DELETE[/b]). A interface PreparedStatement nos permite usufruir de SQL armazenado ou pré-compilado no banco, quando o banco de dados suportar este recurso. A terceira interface é CallableStatement, e permite executar procedimentos e funções armazenados no banco quando o banco suportar este recurso. Vejamos como utilizar a interface Statement. Nos próximos artigos sobre JDBC iremos investigar as outras.
   // Após estabelecermos a conexão com o banco de dados
   // Utilizamos o método createStatement de con para criar o Statement
   Statement stm = con.createStatement();  
   
   // Vamos executar o seguinte comando SQL :
   String SQL = "Select titulo, autor, total_faixas from MeusCDs";
A interface ResultSet permite colher os resultados da execução de nossa query no banco de dados. Esta interface apresenta uma série de métodos para prover o acesso aos dados:
   // Definido o Statement, executamos a query no banco de dados
   ResultSet rs = stm.executeQuery(SQL);
   
   // O método next() informa se houve resultados e posiciona o cursor do banco
   // na próxima linha disponível para recuperação
   // Como esperamos várias linhas utilizamos um laço para recuperar os dados
   while(rs.next())
   {
      // Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:
      String tit = rs.getString("titulo");
      String aut = rs.getString("autor");
      int totalFaixas = rs.getInt("total_faixas");

      // As variáveis tit, aut e totalFaixas contém os valores retornados 
      // pela query. Vamos imprimí-los

      System.out.println("Titulo: "+tit+" Autor: "+aut+" Tot. Faixas: "+totalFaixas);
   }
E nosso acesso está terminado. O importante agora é liberar os recursos alocados pelo banco de dados para a execução deste código. Podemos fazer isso fechando o Statement, que libera os recursos associados à execução desta consulta mas deixa a conexão aberta para a execução de uma próxima consulta, ou fechando diretamente a conexão, que encerra a comunicação com o banco de dados. Para termos certeza de que vamos encerrar esta conexão mesmo que uma exceção ocorra, reservamos o fechamento para a cláusula finally() do tratamento de exceções.
   finally
   {
      try 
      {
         con.close();
      }
      catch(SQLException onConClose)
      {
          System.out.println("Houve erro no fechamento da conexão");
          onConClose.printStackTrace();
      }
   }
Uma classe para listar uma tabela Vamos colocar tudo isso em conjunto para termos uma visão em perspectiva:
 package wlss.jdbcTutorial;
   
   import java.sql.*;

   class Exemplo1
   {
   
      public static void main(String args[])
      {

      
      // A captura de exceções SQLException em Java é obrigatória para usarmos JDBC. 
      // Para termos acesso ao objeto con, ele deve ter um escopo mais amplo que o bloco try
      
      Connection con = null;       

      try 
      {
          // Este é um dos meios para registrar um driver 
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance();
       
          // Registrado o driver, vamos estabelecer uma conexão
          con = DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha");

          // Após estabelecermos a conexão com o banco de dados
          // Utilizamos o método createStatement de con para criar o Statement
          Statement stm = con.createStatement();  
   
          // Vamos executar o seguinte comando SQL :
          String SQL = "Select titulo, autor, total_faixas from MeusCDs";

          // Definido o Statement, executamos a query no banco de dados
          ResultSet rs = stm.executeQuery(SQL);
   
          // O método next() informa se houve resultados e posiciona o cursor do banco
          // na próxima linha disponível para recuperação
          // Como esperamos várias linhas utilizamos um laço para recuperar os dados
          while(rs.next())
          {

             // Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:
             String tit = rs.getString("titulo");
             String aut = rs.getString("autor");
             int totalFaixas = rs.getInt("total_faixas");

             // As variáveis tit, aut e totalFaixas contém os valores retornados 
             // pela query. Vamos imprimí-los

             System.out.println(48:"Titulo: "+tit+" Autor: "+aut+"49:					 Tot. Faixas: "+totalFaixas);
          }

      }
      catch(SQLException e)
      {
          // se houve algum erro, uma exceção é gerada para informar o erro 
          e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
      }
      finally
      {
         try 
         {
            con.close();
         }
         catch(SQLException onConClose)
         {
             System.out.println("Houve erro no fechamento da conexão");
             onConClose.printStackTrace();
         }
      } // fim do bloco try-catch-finally
      } // fim da main
       
   } // fim de nosso primeiro exemplo !
Na próxima parte deste artigo iremos analisar as extensões introduzidas pela API 2.1 e as interfaces PreparedStatement e CallableStatement. [b]Leia também:[/b] [url=http://javafree.uol.com.br/artigo/1357/Acessando-Banco-de-Dados-em-Java-PARTE-2.html]Acessando Banco de Dados em Java (PARTE 2)[/url] [url=http://javafree.uol.com.br/artigo/1358/Acessando-Banco-de-Dados-em-Java-PARTE-3.html]Acessando Banco de Dados em Java (PARTE 3)[/url] [b]Aplicativo Java acessando banco de dados:[/b] [url=http://javafree.uol.com.br/artigo/874102/Aplicativo-Java-com-acesso-a-banco-de-dados-1%C2%BA-parte-Dao.html]Aplicativo Java com acesso a banco de dados: 1º parte - Dao[/url] [url=http://javafree.uol.com.br/artigo/874441/Acessando-Dados-com-Java-Parte-2-Prevendo-problemas.html]Acessando Dados com Java: Parte 2 - Prevendo problemas[/url] [b]Quer aprender mais sobre Java?[/b] [url=http://javafree.uol.com.br/artigo/871498/Tutorial-Java-O-que-e-Java.html]O que é Java?[/url] [url=http://javafree.uol.com.br/artigo/871496/Tutorial-Java-2-Caracteristicas-Basicas.html]Características Básicas[/url] [url=http://javafree.uol.com.br/artigo/871497/Tutorial-Java-3-Orientacao-a-Objetos.html]Orientação a Objetos[/url] [b]Tutoriais para Certificação Java[/b] [url=http://javafree.uol.com.br/artigo/6936/Cap-1-Fundamentos-Linguagem.html]Fundamentos da Linguagem[/url] [url=http://javafree.uol.com.br/artigo/6941/Cap-2-Modificadores.html]Modificadores[/url] [url=http://javafree.uol.com.br/artigo/6944/Cap-3-Operadores-e-atribuicoes.html]Operadores e atribuições[/url] [url=http://javafree.uol.com.br/artigo/6946/Cap-4-Controle-de-Fluxo.html]Controle de Fluxo[/url] [url=http://javafree.uol.com.br/artigo/6947/Cap-5-Orientacao-a-Objetos.html]Orientação a Objetos[/url] [url=http://javafree.uol.com.br/artigo/6951/Cap-6-javalang-e-Wrappers.html]Java Lang e Wrappers[/url] [url=http://javafree.uol.com.br/artigo/6953/Cap-7-Objetos-e-conjuntos.html]Objetos e Conjuntos[/url] [url=http://javafree.uol.com.br/artigo/6954/Cap-8-Classes-internas.html]Classes Internas[/url] [url=http://javafree.uol.com.br/artigo/6955/Cap-9-Threads-Segmentos.html]Threads (Segmentos)[/url]
Dalton

Dalton

Curtidas 0

Respostas

Alexs

Alexs

09/04/2009

Estou com dificuldades em fazer conexão com o access. Será que poderiam me dar um help? :!:
GOSTEI 0
Flávio Bianchi

Flávio Bianchi

09/04/2009

[quote="Alexs"]Estou com dificuldades em fazer conexão com o access. Será que poderiam me dar um help? :!:
Que tipo de problemas você está enfrentando?
GOSTEI 0
Alexs

Alexs

09/04/2009

Queria saber como abir o banco e gravar os dados....
GOSTEI 0
Flávio Bianchi

Flávio Bianchi

09/04/2009

[quote="Alexs"]Queria saber como abir o banco e gravar os dados....
:zoio: :espanto: Leia o tutorial! :roll:
GOSTEI 0
El Tubaron

El Tubaron

09/04/2009

Connection con = DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha"); o que devo escrever nessa linha ,poderia esplica-la mais detalhadamente?, e como configurar o windows me para que seja possivel uma aplicação java acessar uma tabela criada com o microsoft access?
GOSTEI 0
Murilo Araújo

Murilo Araújo

09/04/2009

Olá El Tubaron... Para conectar-se ao Banco de Dados do Access não há problemas... Veja o sequinte código: [color=green:bffa85c19a] // carregando o Driver do banco de dados Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String bd = "jdbc:odbc:DBQ=U:/java_web/Projeto_Final/bd.mdb;Driver={Microsoft Access Driver (*.mdb)}"; // criando uma conexão com o bando de dados, passando como parâmetro a localização deste Connection con = DriverManager.getConnection(bd); // abrindo a conexão com banco de dados para executar as queries (consultas, atualizações ou exclusões de registros do banco de dados) Statement stmt = con.createStatement(); [/color:bffa85c19a] No lugar de [color=green:bffa85c19a]U:/java_web/Projeto_Final/bd.mdb[/color:bffa85c19a] Você aponta para o diretório onde seu banco está gravado. OK?
GOSTEI 0
Tresloukadu

Tresloukadu

09/04/2009

Olá... estou com duvida para estabelecer conexao com o sybase com é a syntax que utilizo para especificar o driver do sybase ?? preciso configurar o cliente odbc no windows para acessar o servidor de dados (sybase)?? a syntax eh Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance(); em JdbcOdbcDriver -> substitui para jdbc:odbc:sybase ??? se vc puder explicar isso;;; e... der umas dicas de como criar tabelas no java etc..... ficarei muito grato ...... valeu ....
GOSTEI 0
Volnei Munhoz

Volnei Munhoz

09/04/2009

[quote="tresloukadu"]Olá... estou com duvida para estabelecer conexao com o sybase com é a syntax que utilizo para especificar o driver do sybase ?? preciso configurar o cliente odbc no windows para acessar o servidor de dados (sybase)?? a syntax eh Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance(); em JdbcOdbcDriver -> substitui para jdbc:odbc:sybase ??? se vc puder explicar isso;;; e... der umas dicas de como criar tabelas no java etc..... ficarei muito grato ...... valeu ....
A sintaxe para o registro do driver ODBC é essa mesmo, mais aconselho a procurar um driver Jdbc para fazer a conexão. Quanto a criar tabelas no Java, pra que necessáriamente você precisaria disto? Está desenvolvendo uma aplicação auto-instalável ou de manutenção em bancos? Se não, não faz sentido! Caso contrário, estude um pouco da API Jdbc é muito simples. Crie um novo tópico na sessão correta para fazer suas perguntas, essa sessão aqui é de tutoriais!
GOSTEI 0
Jorge Andrade

Jorge Andrade

09/04/2009

tem algum erro aki o q é?? { // Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado: String tit = rs.getString("titulo"); String aut = rs.getString("autor"); int totalFaixas = rs.getInt("total_faixas"); // As variáveis tit, aut e totalFaixas contém os valores retornados // pela query. Vamos imprimí-los System.out.println(48:"Titulo: "+tit+" Autor: "+aut+"49: Tot. Faixas: "+totalFaixas); }
GOSTEI 0
Leandro Mendes

Leandro Mendes

09/04/2009

:o
GOSTEI 0
Rafaelcastro

Rafaelcastro

09/04/2009

Boa noite grande comunidade.. Como vocês podem ver, este é o meu primeiro post neste fórum... Sou iniciante e estou começando a dar os primeiros passos, como todos vocês já deram um dia... Gostei muito do fórum e a partir de agora começo essa nova fase da minha vida... Sou programador em PHP e utilizo os banco de dados mysql e firebird... Java se comunica com todos os bancos de dados? ou somente alguns específicos... Espero que esta minha primeira pergunta não seja muito infantil... Eu chego lá... Abraço a todos --------------------------------------------------------------- PS: fiz uma busca no fórum e vi que o java usa firebird, por exemplo... Então deixem eu mudar minha pergunta... Java usa todos os tipos de banco de dados? Abraço de novo
GOSTEI 0
Daniel Martins

Daniel Martins

09/04/2009

Todos todos eu não sei dizer.. mas eu diria que a maioria absoluta dos grandes fornecedores de bancos de dados decentes disponibilizam drivers JDBC. Dê uma olhada [url=http://developers.sun.com/product/jdbc/drivers/index.html]nessa página da Sun[/url], para pesquisa de drivers JDBC de todos os [url=http://java.sun.com/products/jdbc/driverdesc.html]tipos[/url] (tipo 1, tipo 2, tipo 3, e tipo 4). []'s
GOSTEI 0
Daniel Martins

Daniel Martins

09/04/2009

Todos todos eu não sei dizer.. mas eu diria que a maioria absoluta dos grandes fornecedores de bancos de dados decentes disponibilizam drivers JDBC. Dê uma olhada [url=http://developers.sun.com/product/jdbc/drivers/index.html]nessa página da Sun[/url], para pesquisa de drivers JDBC de todos os [url=http://java.sun.com/products/jdbc/driverdesc.html]tipos[/url] (tipo 1, tipo 2, tipo 3, e tipo 4). []'s
GOSTEI 0
Daniel Martins

Daniel Martins

09/04/2009

Todos todos eu não sei dizer.. mas eu diria que a maioria absoluta dos grandes fornecedores de bancos de dados decentes disponibilizam drivers JDBC. Dê uma olhada [url=http://developers.sun.com/product/jdbc/drivers/index.html]nessa página da Sun[/url], para pesquisa de drivers JDBC de todos os [url=http://java.sun.com/products/jdbc/driverdesc.html]tipos[/url] (tipo 1, tipo 2, tipo 3, e tipo 4). []'s
GOSTEI 0
Jr

Jr

09/04/2009

Alguem tem algum tutorial passo a passo de como se conectar ao banco MySQL a partir de JSP?
GOSTEI 0
Jr

Jr

09/04/2009

tem alguma maneira de fazer requisicoes no DB dinamicamente, sem ter usuario e senha fixos guardados em algum xml, ai para cada usuario logado ele usa o proprio user para fazer as requisicoes no banco... alguma sugestao, link, exemplo, etc ? muito obrigado!
GOSTEI 0
Shaylon

Shaylon

09/04/2009

Compilei a classe Exemplo1 acima e deu o seguinte erro: "unsuported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown" na linha: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); alguem sabe porque isso acontece?
GOSTEI 0
Rafael Arcanjo

Rafael Arcanjo

09/04/2009

Gostaria de saber como faço para conectar meu aplicativo java com meu banco de dados (PostgreSQL 8.1) e java 1.5. Já baixei os arquivos do site do postgre http://jdbc.postgresql.org/download.html (8.1-407 JDBC 3) mas não sei onde coloco esses arquivos! gostaria de saber onde devo colocar esses arquivos e se devo fazer alguma ligação no CLASSPATH ! ??????????????
GOSTEI 0
Kolt

Kolt

09/04/2009

sou novo em java tbm mas este foi o codigo que aprendi pra concetar e salvar dados. AcessandoDadosJDBC.java
package com.teste.jdbc; import java.sql.*; public class AcessaDadosJDBC { private Connection conn; private boolean connected = false; private String DRIVER = "com.mysql.jdbc.Driver"; private String URL_STRING = "jdbc:mysql://192.168.2.2/ownz"; private String USER = "ownz"; private String PASSWD = "nananana"; public void conectar() { try { Class.forName(DRIVER); conn = DriverManager.getConnection(URL_STRING, USER, PASSWD); } catch (ClassNotFoundException ex) { System.out.println("Driver JDBC Não encontrado"); } catch (SQLException ex1) { System.out.println("Falha durante o processo de conexao" + ex1); } } public void incluirDadosDeExemplo() { try { Statement stmt = conn.createStatement(); //Obrigatório para inclusão e consulta for(int i=1; i < 5001; ++i) { StringBuffer sql = new StringBuffer("INSERT INTO pessoa "); sql.append(" (nome, endereco, telefone) "); sql.append("VALUES ("); sql.append("\"nome" + i + "\", "); sql.append("\"endereco" + i + "\", "); sql.append("\"telefone" + i + "\") "); stmt.execute(sql.toString()); //efetiva a inserção no banco } } catch (SQLException ex) { System.out.println("Falha ao inserir registro.\n" + ex); } } public void imprimeDados() { try { Statement stmt = conn.createStatement(); //Obrigatório para inclusão e consulta ResultSet result = stmt.executeQuery("SELECT * FROM pessoa"); System.out.println("Nome\tEndereco\tTelefone"); System.out.println("-----------------------------------------------"); while ( result.next() ) { //Enquanto tiver mais registros, imprime no console System.out.print(result.getString("nome") + "\t"); System.out.print(result.getString("endereco") + "\t"); System.out.print(result.getString("telefone") + "\n"); } } catch (SQLException ex) { System.out.println("Falha ao ler registros.\n" + ex); } } }
TesteJDBC.java
package com.teste.jdbc; public class TesteJDBC { public static void main(String[] args) { AcessaDadosJDBC acessaDados = new AcessaDadosJDBC(); acessaDados.conectar(); acessaDados.incluirDadosDeExemplo(); acessaDados.imprimeDados(); } }
GOSTEI 0
Kaio Santos

Kaio Santos

09/04/2009

Não consigo fazer a conxão ,eu uso o mysql já baixei o jar cooloquei no /ext dda pasta lib do jre o que faltta ?fala que o driver não foi encontrado podem me ajudar
GOSTEI 0
Dalton

Dalton

09/04/2009

[quote="Kaiom"]Não consigo fazer a conxão ,eu uso o mysql já baixei o jar cooloquei no /ext dda pasta lib do jre o que faltta ?fala que o driver não foi encontrado podem me ajudar
Procure aqui no fórum por classpath, certamente você está com problemas referente a isso.
GOSTEI 0
Wr_silva

Wr_silva

09/04/2009

apos ser realizada a consulta, mostra somente 6 registro e da o sequinte erro: java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Índice de descritor inválido por que isso esta acontecendo....
GOSTEI 0
Marcoscorso

Marcoscorso

09/04/2009

Nao estou entendendo as seguintes linhas, alguem pode me ajudar : private String DRIVER = "com.mysql.jdbc.Driver"; private String URL_STRING = "jdbc:mysql://192.168.2.2/ownz"; private String USER = "teste"; private String PASSWD = "teste";
GOSTEI 0
Janio Silva

Janio Silva

09/04/2009

Olá Amigos Como configurar o ODBC do Windows para esse tipo de conexão.?
GOSTEI 0
Janio Silva

Janio Silva

09/04/2009

Alguém pode me mostrar como se conectar ao SQL Server 2005? (Aposto que é o mais chato). No Class.forName(), muda os parametros né? Obrigado
GOSTEI 0
Janio Silva

Janio Silva

09/04/2009

[quote="GuilhermeG"]Alguém pode me mostrar como se conectar ao SQL Server 2005? (Aposto que é o mais chato). No Class.forName(), muda os parametros né? Obrigado
Fórum errado: voce näo está postando ou comentando um tutorial! E POR FAVOR, evite postar duplicado. Respota no outro fórum: http://www.javafree.org/javabb/viewtopic.jbb?t=864516&page=1#140357 []]
GOSTEI 0
Bruno

Bruno

09/04/2009

[color=red][/color] Olá amigos, Sou iniciante em Java, estou aprendendo agora na faculdade. O meu professor passou um trabalho para fazer com que um programa Java acesse um banco de dados, já sei que para isso tenho que usar o JDBC, porém não sei como usa-ló. Sei que o JDBC pode se conectar a qualquer bancode dados, então instalei no meu PC o MySQL sei também que é preciso um driver JDBC para MySQL então baixei o MySQL connector. Mas dai em diante não sei o que fazer. Se poderem me ajudar agradeço.
GOSTEI 0
Janio Silva

Janio Silva

09/04/2009

galera alguem, tem um exemplo de como acessar o JDBC utilizando o DAO, tou precisando muiiiiiiiiiiiiiiiiiiiiiito para desenvolver um trabalho
GOSTEI 0
Janio Silva

Janio Silva

09/04/2009

Oi pessoal... Bom...eu estou montando um projeto em Java, utilizando o Jcreator Estou fazendo conexão com o Banco de dados, porém ao executar o programa e clicar no botão para gravar o registro no banco, no prompt aparecem várias instruções, e a primeira delas é essa: java.lang.nullpointerexception mas ainda existem umas 20 linhas com diversos "erros" não sei o que fazer para resolver o problema, pois já revisei o programa várias vezes, e não acho o erro! Quem puder ajudar...ficaria imensamente grata Segue o código do programa:


import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class buscanome extends JFrame implements ActionListener
{

JLabel L1,L2;
JButton btpesquisar, btcancelar;
static JTextField tfNome;
String nome;
JPanel painel1 = new JPanel();
ResultSet rs;
Statement MeuState;
Connection MinhaConexao;
boolean status;

public static void main(String args[])
{


JFrame Janela = new buscanome();
Janela.show();
WindowListener x = new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
};
Janela.addWindowListener(x);
}

buscanome()
{
painel1.setLayout(new FlowLayout(FlowLayout.LEFT));
L1 = new JLabel("Você selecionou a opção de identificação por nome.Por Favor: ");
L2 = new JLabel("Digite o nome para pesquisar.");

tfNome = new JTextField(50);
nome = tfNome.getText();
btpesquisar=new JButton("Pesquisar");
btcancelar=new JButton("Cancelar Operação");

btpesquisar.setBackground(new Color(180,180,250));
btcancelar.setBackground(new Color(180,180,250));

btpesquisar.addActionListener(this);
btcancelar.addActionListener(this);


painel1.add(L1); painel1.add(tfNome);
painel1.add(L2);
painel1.add(btpesquisar); painel1.add(btcancelar);



getContentPane().add(painel1);
setTitle("Busca por Nome");
setSize(600,140);
setResizable(false);
String url = "jdbc:odbc:MeuBanco";


try
{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
MinhaConexao = DriverManager.getConnection(url);
}
catch(ClassNotFoundException erro)
{
System.out.println("Driver JDBC-ODBC nao encontrado!");
return;
}
catch(SQLException erro)
{
System.out.println("Problema na Conexao com fonte de dados");
return;
}}

public void actionPerformed(ActionEvent e)
{
if(e.getSource()==btpesquisar)
{
try
{

//MeuState = MinhaConexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

String sql = "select * nome from Pacientes where nome = '" + nome + "'";
tfNome.getText();
rs = MeuState.executeQuery(sql);
rs.next();
nome = rs.getString("nome");

String sql2="Insert into Resultado(resulnome) Values (sql)";
MeuState.executeUpdate(sql2);
JOptionPane.showMessageDialog(null, "Gravação Realizada com sucesso!");

}
catch(SQLException erro) { }
}} }  
Segue em anexo o Banco que estou usando
GOSTEI 0
Higor Santos

Higor Santos

09/04/2009

me explica melhor como baixar o drive e juntar com o banco de dados
GOSTEI 0
Irwing Ovando

Irwing Ovando

09/04/2009

ola amigos.. vamos ver c consigo explicar meu problema... pois bem... fikei fechado ao mundo PHP por 7 anos... agora to partindo pro java e estou tendo algumas duvidas... fiz uma consulta em mysql e queria fazer uma validação do tipo c encontrou registros ele prossegue, senão retorna em uma especie de "alert"... quando encontrado registro, ele ta funcionando normal... mas se não encontra retorna nisso: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND SENHA = ''' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)... etc.... ja usei if / else não resolveu... e try / catch não entendo mto bem como funciona.... alguem pode dar uma força ae... vleew ;)
GOSTEI 0
Davi Chagas

Davi Chagas

09/04/2009

Olá! NO caso vc poderia especificar por gentileza como ficaria o caminho do CLASS PATH para conectar o MySql?... Só me resta especificar o caminho no class path ... porém... preciso de um exemplo de como ficaria no class path... Obrigado!
GOSTEI 0
José

José

09/04/2009

Galera estou com problemas com MS SQL server 2005, não estou conseguindo me conectar pois no banco tenho que me conectar através do usuário do windows... Alguém pode ajudar...
GOSTEI 0
Dalton

Dalton

09/04/2009

[quote="marcelofloripa"]Galera estou com problemas com MS SQL server 2005, não estou conseguindo me conectar pois no banco tenho que me conectar através do usuário do windows... Alguém pode ajudar...
Crie um novo tópico para isso, por favor.
GOSTEI 0
POSTAR