Relizar Conexão Java com Sql Server 2008 – JDBC

Depois de apanhar por 3 dias de varios computadores que não queriam conectar no banco de MODO algum, finalmente descobri o problema. Agora vamos a um tutorial pra deixar bem claro de como fazer isso.

INSTALANDO O SQL SERVER 2008

Resolvi começar dessa parte por um motivo bem simples,a primeira vez que eu tive problemas com o Sql Server 2008 foi por que durante a instalação fizeram besteira. Logo, vamos de cara prevenir que isso aconteça. A Instalação foi feita com base no SQL SERVER 2008 R2 estou falando do express aqui, mas não tem muita diferença, caso haja alguma coisa que você não entendeu pode mandar o comentário que eu tento ajudar.

Nova Instalação
Nova Instalação

Essa opção só aparece se você não tiver instalado o sql ainda.

Torça pra não dar erro
Aqui você torce pra não dar erro

Normalmente não ocorre erro algum aqui, MAS eu ja tive problemas com isso, a solução (no meu caso) foi simples, a linguagem do SO era diferente da que estava no pacote. Ou seja se você baixou o Sql em ING e tem SO em PT ele vai dar erro, e vice-versa. Bom em seguida temos o classico termos e tal, LEIA e aceite, enfim, vamos ao que normalmente costuma dar problema.

Autenticação SQL
AQUI É QUE SEMPRE COLOCAM ERRADO..

Muitos problemas se dão nessa etapa, grande parte das pessoas vai apertando avançar sem nem mesmo ler nada. Depois eles tem um baita problema para resolver e não sabem nem porque. COLOQUE NO MODO MISTO! “Porque Angeliski? Que diferença faz?” Assim, pra começo de conversa esse um banco que funciona como SERVIDOR não pode se autenticar só pelo windows né? O mais importante é que caso você use aplicações cliente/servidor, elas não vão logar no seu BD se não for atraves de um usuário (normalmente o SA). Caso você ja tenha instalado seu SQL Server e não tenha feito isso, manda um comentário que eu coloco onde você tem de acertar.

Perfect!
Se você chegou aqui, comemore!

Ta instalado o negocio, agora vamos ao JAVA!

Conectando o Java ao SQL!

Finalmente chegamos onde queriamos. Primeiro o codigo:

import java.sql.*;

public class Main {
     public static void main(String[] args) {
    // string de conexão...usando Windows Authentication
       String connectionUrl = "jdbc: sqlserver: //localhost:1433;"
        + "databaseName=estudos;integratedSecurity=true;";
         try {
               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
               Connection conn = DriverManager.getConnection(connectionUrl);
               System.out.println("Conexão obtida com sucesso.");
             } catch (SQLException ex) {
               System.out.println("SQLException: " + ex.getMessage());
               System.out.println("SQLState: " + ex.getSQLState());
               System.out.println("VendorError: " + ex.getErrorCode());
             } catch (Exception e) {
       System.out.println("Problemas ao tentar conectar com o banco de dados: "+ e);
              }
           }
}

 

(Pra quem quiser copiar o codigo indentado…) Uma coisa muito importante que não deve ser esquecida é  adicionar o driver ao projeto.( Se você não sabe como fazer isso no Eclipse…) O Link da microsoft você encontra aqui.Sim, ele funciona! Não adicione os dois, só o sqljdbc4, que da suporte. Agora é só executar e pronto!

Erro
TCP/IP? Não! Era pra funcionar!

“Angeliski, no seu pode até funcionado, mas aqui necas.” Eu sei, frustante. Mas vamos lá, você vai procurar no iniciar, na pasta do Sql uma ferramenta chamada “SQL Server Configuration Manager” .

SQL Manager
The Solution

Se você só tiver uma instancia instalada, vai aparecer como acima, rodando a instancia e o navegador. Caso tenha mais, priorize na qual você vai tentar se conectar. Entre em “Configuração de Rede do SQL Server” -> Protocolos para” o nome da instancia que você vai trabalhar. A tela abaixo vai aparecer.

SQL
“DESABILITADO? Não vai dar certo nunca!”

Como você deve ter reparado assim que abriu a tela, apenas “Memoria Compartilhada” esta habilitado. O mais importante, TCP/IP esta desabilitado. Entao nem preciso dizer que é para habilitar né? agora sim, tudo funcionando.

Erro Again
“Esse cara ta me zuando, continua o tal TCP/IP…”

Eu sei, foi nessa hora que o desespero começou, já que tava tudo certo. Eis que o Mestre me contou que existe um negocio chamado Portas Dinamicas. “What the fuck?” Tenso amigão, tenso. Vamos a Solução, volte lá onde você habilitou o TCP/IP, e selecione as Propriedades(do TCP/IP), vá até a aba Endereços IP e siga até o fim dela. Eis que aparece nossa inimiga. Em porta TCP coloque 1433. finito.

Dinamicas
“O Troço Chato..”

Eu concordo, chato mesmo. Você pode rodar se quiser, mas vou ser sincero: Vai dar erro.

Erro Final
“Isso não vai dar certo nunca…”

Calma, ultima etapa. Quando você usa autenticação integrada do Windows, o Windows precisa de uma dll para saber o que fazer. Então você tem de ir lá na pasta do driver que você baixou, tem uma pasta auth (adivinha porque?), entra na pasta que convem a sua arquitetura e copia a dll que está lá para o System32 do seu computador. FIM! Convem prestar atenção em uma coisa aqui, o databaseName tem de ser um banco valido no seu SQL Server, se não haverão outros erros. Alem disso, você pode (e deve) querer conectar o programa sem a autenticação do windows, nesse caso você deve fazer do seguinte modo: ir até a linha da “String connectionUrl”, no fim dela você retira a informação “integratedSecurity=true;”; Alem disso tem uma linha onde é chamado o metodo DriverManager.getConnection(connectionUrl), que passa só a url como parametro, nesse metodo você deve agora passar o usuario e a senha, ficando assim a mudança:  DriverManager.getConnection(connectionUrl,”USUARIO”,”SENHA”);(Se você quer saber do codigo..)

Duvidas? Gostou? Me acha um idiota? Comenta!

Angeliski

Anúncios

20 comentários em “Relizar Conexão Java com Sql Server 2008 – JDBC

  1. Bom dia Angeliski, tudo bom?

    Então, eu fiz o passo a passo, da forma com que você fez, porém estou sempre me esbarrando no erro:

    SQLException: Falha na conexão TCP/IP com o host localhost, porta 1433. Erro: “Connection refused: connect. Verifique as propriedades da conexão. Verifique se uma instância do SQL Server está sendo executada no host e se está aceitando conexões TCP/IP na porta. Verifique se as conexões TCP na porta não foram bloqueadas por um firewall.”.
    SQLState: 08S01
    VendorError: 0

    Eu não estou conseguindo instanciar, e iniciar o meu Navegador do SQL Server (SQL Browser), no SQL Server Configuration Manager, e desconfio que seja por isto.

    Pode me ajudar?

    A propósito, eu estou rodando meu windows/SQL Server em uma maquina virtual…talvez isso interfira também?

    Curtir

    1. Diogo, o que pode estar acontecendo é que por causa do uso do SQL em maquina virtual ele esteja tentando usar a 1433, mas ela ja esteja em uso. Tente utilizar alguma outra porta para acessar a instancia.

      Curtir

  2. angeliski, primeiro agradecer tua ajuda, agora vou a minha dúvida, esse método deveria funcionar com o sql server EXPRESS também? desde ja agradeço ja que no meu nao esta funcionando, fiz como vc explicou direitinho. Abraço. El negrito

    Curtir

    1. Salve Jose Luis! Muito agradecido, preciso até arrumar tempo pra postar mais artigos aqui. X)
      Bom, respondendo sua duvida, deveria funcionar sim cara, tanto é que a primeira vez que eu fi esse procedimento foi em um EXPRESS mesmo. O que exatamente não esta funcionando? Dá erro no java? qual o StackTrace?

      Curtir

      1. Obrigado angeliski, segue o erro
        Problemas ao tentar conectar com o banco de dados: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

        Curtir

      1. eu usei o arquivo desse link aqui acima o…Microsoft JDBC Driver 4.0 for SQL Server, eu copiei teu código!! So mudei a connectionurl, pus “localhost”, “user”, “senha” na linha 11, obrigado
        El negrito

        Curtir

  3. “SQLException: No suitable driver found for jdbc: sqlserver: //localhost:1433;databaseName=CINEMA;user=sa;password=123;
    SQLState: 08001
    VendorError: 0”

    Apareceu isso, e agora?

    Curtir

  4. Opa, fiz o procedimento do tutorial e conectou certim, porem não consigo fazer um simples SELECT no banco,

    usei esse código

    Statement stmt = null;
    ResultSet rs = null;
    // SQL query command
    String SQL = “SELECT * FROM Clientes”;
    stmt = conn.createStatement();
    rs = stmt.executeQuery(SQL);
    while (rs.next()) {
    System.out.println(rs.getString(“Razao”) + ” : ” + rs.getString(“CNPJ”));
    }

    e retorna esse erro

    Exception in thread “main” java.lang.RuntimeException: Uncompilable source code – Erroneous sym type: conn.createStatement
    at sistema.Sistema.main(Sistema.java:32)
    Java Result: 1

    uso o Netbeans !

    Curtir

  5. Nossa, procurei em diversos sites e só consegui realizar a conexão com esse código. O link para o download do jdbc4 está desatualizado mas é só pesquisar que logo encontra. Baita ajuda. Parabéns!!!

    Curtir

Comenta ai !

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s