java.sql.SQLException: Nenhum driver adequado encontrado para jdbc: microsoft: sqlserver

Estou recebendo essa exceção quando tento executar este programa. É um dos exemplos da Microsoft. Eu adicionei o sqljdbc4.jar ao classpath no netbeans tanto para compilar quanto para executar, através das propriedades do projeto. Eu também testei que a class poderia ser encontrada usando uma declaração de importação abaixo – nenhum erro durante a compilation, então ela deve estar encontrando o jar.

Poderia estar relacionado a uma dll ou alguma dll sql que o sqldbc4.jar referências?

Esta é a exceção exata, e abaixo está o código exato, exceto senha.

Exceção:

run: java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=HealthCareDatabase Error Trace in getConnection() : No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=HealthCareDatabase Error: No active Connection at java.sql.DriverManager.getConnection(DriverManager.java:602) at java.sql.DriverManager.getConnection(DriverManager.java:185) at javaapplication1.Connect.getConnection(Connect.java:35) at javaapplication1.Connect.displayDbProperties(Connect.java:50) at javaapplication1.JavaApplication1.main(JavaApplication1.java:23) BUILD SUCCESSFUL (total time: 1 second) 

Código:

  package javaapplication1; import com.microsoft.sqlserver.jdbc.SQLServerDriver; import java.*; public class Connect { private java.sql.Connection con = null; private final String url = "jdbc:microsoft:sqlserver://"; private final String serverName = "localhost"; private final String portNumber = "1433"; private final String databaseName = "HealthCareDatabase"; private final String userName = "larry"; private final String password = "xxxxxxx"; // Constructor public Connect() { } private String getConnectionUrl() { return url + serverName + ":" + portNumber + ";databaseName=" + databaseName ; } private java.sql.Connection getConnection() { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); con = java.sql.DriverManager.getConnection(getConnectionUrl(), userName, password); if (con != null) { System.out.println("Connection Successful!"); } } catch (Exception e) { e.printStackTrace(); System.out.println("Error Trace in getConnection() : " + e.getMessage()); } return con; } public void displayDbProperties() { java.sql.DatabaseMetaData dm = null; java.sql.ResultSet rs = null; try { con = this.getConnection(); if (con != null) { dm = con.getMetaData(); System.out.println("Driver Information"); System.out.println("\tDriver Name: " + dm.getDriverName()); System.out.println("\tDriver Version: " + dm.getDriverVersion()); System.out.println("\nDatabase Information "); System.out.println("\tDatabase Name: " + dm.getDatabaseProductName()); System.out.println("\tDatabase Version: " + dm.getDatabaseProductVersion()); System.out.println("Avalilable Catalogs "); rs = dm.getCatalogs(); while (rs.next()) { System.out.println("\tcatalog: " + rs.getString(1)); } rs.close(); rs = null; closeConnection(); } else { System.out.println("Error: No active Connection"); } } catch (Exception e) { e.printStackTrace(); } dm = null; } private void closeConnection() { try { if (con != null) { con.close(); } con = null; } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { Connect myDbTest = new Connect(); myDbTest.displayDbProperties(); } 

}

    Seu URL deve ser jdbc:sqlserver://server:port;DatabaseName=dbname
    e o nome da class deve ser como com.microsoft.sqlserver.jdbc.SQLServerDriver
    Use o driver JDBC do MicrosoftSQL Server 2.0

    A seguir, um código simples para ler do database SQL. Nomes de database é “database1”. O nome da tabela é “table1”. Ele contém duas colunas “uname” e “pass”. Não esqueça de adicionar “sqljdbc4.jar” ao seu projeto. Faça o download do sqljdbc4.jar

     public class NewClass { public static void main(String[] args) { Connection conn = null; String dbName = "database1"; String serverip="192.168.100.100"; String serverport="1433"; String url = "jdbc:sqlserver://"+serverip+"\\SQLEXPRESS:"+serverport+";databaseName="+dbName+""; Statement stmt = null; ResultSet result = null; String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String databaseUserName = "admin"; String databasePassword = "root"; try { Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url, databaseUserName, databasePassword); stmt = conn.createStatement(); result = null; String pa,us; result = stmt.executeQuery("select * from table1 "); while (result.next()) { us=result.getString("uname"); pa = result.getString("pass"); System.out.println(us+" "+pa); } conn.close(); } catch (Exception e) { e.printStackTrace(); } } } 

    Você pode tentar como abaixo com sqljdbc4-2.0.jar:

      public void getConnection() throws ClassNotFoundException, SQLException, IllegalAccessException, InstantiationException { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); String url = "jdbc:sqlserver://:;databaseName=" + DATABASE_NAME; Connection conn = DriverManager.getConnection(url, USERNAME, PASSWORD); System.out.println("DB Connection started"); Statement sta = conn.createStatement(); String Sql = "select * from TABLE_NAME"; ResultSet rs = sta.executeQuery(Sql); while (rs.next()) { System.out.println(rs.getString("COLUMN_NAME")); } } 

    Eu estava tendo o mesmo erro, mas tinha uma string de conexão adequada. Meu problema era que o driver não estava sendo usado, portanto, foi otimizado para fora da guerra compilada.

    Certifique-se de importar o driver:

     import com.microsoft.sqlserver.jdbc.SQLServerDriver; 

    E então, para forçá-lo a ser incluído na guerra final, você pode fazer algo assim:

     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 

    Essa linha está na questão original. Isso também funcionará:

     SQLServerDriver driver = new SQLServerDriver(); 

    Para alguém que procura resolver o mesmo usando maven. Adicione abaixo a dependência no POM:

      com.microsoft.sqlserver mssql-jdbc 7.0.0.jre8  

    E use abaixo o código para conexão:

     String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=master;user=sa;password=your_password"; try { System.out.print("Connecting to SQL Server ... "); try (Connection connection = DriverManager.getConnection(connectionUrl)) { System.out.println("Done."); } } catch (Exception e) { System.out.println(); e.printStackTrace(); } 

    Procure por este link para outras consultas do tipo CRUD.