Java.SQL.SQLException: Aucun pilote approprié n'a été trouvé pour jdbc: microsoft: sqlserver


Je reçois cette exception lorsque j'essaie d'exécuter ce programme. C'est l'un des Microsoft des exemples. J'ai ajouté le sqljdbc4.jar au classpath dans netbeans pour la compilation et l'exécution, via les propriétés du projet. J'ai également testé que la classe pouvait être trouvée en utilisant une instruction d'importation ci - dessous-aucune erreur lors de la compilation, elle doit donc trouver le jar.

Pourrait-il être lié à une dll ou à une dll sql que le sqldbc4.pot de références?

C'est l'exception exacte, et ci-dessous est le code exact, sauf pour le mot de passe.

Exception:

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)

Code:

 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();
    }

}

Author: Piyush Mattoo, 2011-04-11

5 answers

Votre URL doit être jdbc:sqlserver://server:port;DatabaseName=dbname
et le nom de la classe devrait être comme com.microsoft.sqlserver.jdbc.SQLServerDriver
Utilisez Le pilote JDBC du serveur MicrosoftSQL 2.0

 59
Author: Piyush Mattoo, 2011-04-11 05:38:12

Voici un code simple à lire à partir de la base de données SQL. Les noms de base de données sont "database1". Le nom de la table est "table1". Il comporte deux colonnes "uname" et "pass". N'oubliez pas d'ajouter "sqljdbc4.jar" à votre projet. Télécharger 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();
        }
    }
}
 5
Author: Fathah Rehman P, 2015-02-05 20:12:05

, Vous pouvez essayer comme ci-dessous avec sqljdbc4-2.0.pot:

 public void getConnection() throws ClassNotFoundException, SQLException, IllegalAccessException, InstantiationException {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
        String url = "jdbc:sqlserver://<SERVER_IP>:<PORT_NO>;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"));
        }
    }
 0
Author: shivam srivastava, 2017-07-26 16:10:21

J'avais la même erreur, mais j'avais une chaîne de connexion appropriée. Mon problème était que le pilote n'était pas utilisé, donc a été optimisé hors de la guerre compilée.

Assurez-vous d'importer le pilote:

import com.microsoft.sqlserver.jdbc.SQLServerDriver;

Et puis pour le forcer à être inclus dans la guerre finale, vous pouvez faire quelque chose comme ceci:

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

Cette ligne est dans la question originale. Cela fonctionnera également:

SQLServerDriver driver = new SQLServerDriver();
 0
Author: JeffryHouser, 2017-12-28 16:59:54

Pour quelqu'un qui cherche à le résoudre en utilisant maven. Ajouter ci-dessous la dépendance dans POM:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>7.0.0.jre8</version>
</dependency>

Et utiliser le code ci-dessous pour la connexion:

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();
}

Recherchez ce lien pour d'autres requêtes de type CRUD.

 -1
Author: Shams, 2018-08-31 09:23:39