Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kandrade

Acesso a Dados - JDBC - Parte I

Recommended Posts

Introdução


Esse tutorial foi criado devido a grande quantidade de dúvidas que vejo em fóruns, principalmente de pessoas iniciantes na linguagem de como é a relação do Java com o Banco de Dados. Os assuntos tratados nesse tutorial são: JDBC, Factory, Beans e DAO. O banco de dados que irei utilizar é o SQL Server 2008 Express.

O tutorial será dividido em 3 partes. Espero que gostem!

Java Acesso a Dados - JDBC - Parte I


JDBC é uma API escrita em Java que serve como uma ponte entre nossos programas e o banco de dados. Cada banco de dados possui uma implementação JDBC chamada de driver.

No nosso caso o driver JDBC que vamos usar é o jtds que serve para os bancos SQL Server e Sybase.
http://jtds.sourceforge.net/

Vou deixar os links dos JDBDCs dos bancos mais usados:
MySQL -> http://dev.mysql.com/downloads/connector/j/5.1.html
PostgreSQL -> http://jdbc.postgresql.org/
Oracle -> http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html

Baixe o mais atual e o adicione nas bibliotecas de seu projeto.
Em breve vou postar como fazer isso nas principais IDEs Netbeans e Eclipse.

Estamos prontos para começar a programar.
Vamos criar a fábrica de conexões que como o próprio nome diz vai gerenciar nossas conexões com o banco.
public class ConnectionFactory {
    public static Connection getConnection() throws SQLException{
      String url = "jdbc:jtds:sqlserver://localhost:1433/seu_banco;user=seu_usuario;password=sua_senha";
      Connection c = null;
      try
      {
         Class.forName("net.sourceforge.jtds.jdbc.Driver");
         c = DriverManager.getConnection(url);
      }
      catch(ClassNotFoundException cnfe)
      {
         cnfe.printStackTrace();
      }
      return c;
    }
}

O banco de dados está rodando localmente e não esqueça de fazer as devidas substituições em banco, usuário e senha.

Vamos a algumas explicações do código:

Class.forName(DRIVER);

Mas o que acontece realmente aqui? Quando você utiliza o método estático Class.forName(), o Class Loader tenta inicializar esta classe. Esta classe (que é o nosso driver jdbc) possui um bloco inicializador estático (não se preocupe caso você não conheça este recurso), que irá registrar essa classe como um driver JDBC, avisando o java.sql.DriverManager, pelo método registerDriver.

Fonte: http://www.guj.com.br/java.tutorial.artigo.7.1.guj

A classe DriverManager gerencia os Driver JDBC. Quando chamanos o método getConnection, o DriverManager tentará localizar um driver adequado, utilizando o(s) driver(s) carregado pelo Class Loader.

Vamos testar nossa classe de conexão

public class TesteConexao{
    public static void main(String[] args){
        Connection con = null;
        try {
            con = ConnectionFactory.getConnection();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        if(con != null){
            System.out.println("Conexao efetuada com sucesso!");
        }
        else{
            System.out.println("Conexao falhou!");
        }
    }
}

Por enquanto é isso, estou preparando o próximo material.

Aguardem!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom Kandrade. Parabéns.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ótimo tutorial

 

parabéns

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para manter um log vou postar as alterações.

 

- Alteração do SGDB utilizado de SQL Server 2005 para SQL 2008.

- Acrescentado links para os drivers dos principais SGDBs: Mysql, PostgreSQL e Oracle.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz exatamente como descrito no tópico e no teste da conexão da o seguinte erro:

E as únicas alterações foram o ip do meu servidor sql que é o ip local 192.168.0.88 usuário= sa e senha (não tem senha)

run:
java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Conexao falhou!
URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at ConnectionFactory.getConnection(ConnectionFactory.java:22)
        at TesteConexao.main(TesteConexao.java:18)
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

public class ConnectionFactory {

    public static Connection getConnection() throws SQLException{
      String url = "jdbc:jtds:sqlserver://192.168.0.88\192.168.0.88:1433/TESTE_JDBC;user=sa;password=";
      Connection c = null;
      try
      {
         Class.forName("net.sourceforge.jtds.jdbc.Driver");
         c = DriverManager.getConnection(url);
      }
      catch(ClassNotFoundException cnfe)
      {
         cnfe.printStackTrace();
      }
      return c;
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro aconteceu porque voce não possui o driver JDBC.

Pelo que vi em seu outro post voce usa o driver da Microsoft.

 

Se quiser seguir do mesmo jeito do tutorial baixe o driver e adicione os jar a seu projeto:

 

No nosso caso o driver JDBC que vamos usar é o jtds que serve para os bancos SQL Server e Sybase.

http://jtds.sourceforge.net/

 

Se quiser manter o driver da Microsoft é só alterar a url de conexão:

 

String url = "jdbc:sqlserver://servidor/TESTE?user=sa&password=";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então mais eu puxei esse driver tambem e instalei....tentei das duas formas e o erro persiste, vou anexar a imagem dos meus servidores.

Imagem Postada

E no método citado nesse artigo http://imasters.com.br/artigo/12894/bancodedados/criando_conexao_java__bd/ funciona porém não sei como continuar a partir daí, entao resolvi seguir seu tópico que está mais completo, com rotinas de insert select etc.

Mais infelizmente não está dando certo.

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce precisa colocar os jar do driver dentro da lib do projeto.

Eu não me recordo com netbeans porque uso o eclipse, mas não é difícil.

Veja a imagem no eclipse de como adicionar jar externo ao projeto.

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.