webentwicklung-frage-antwort-db.com.de

java.sql.SQLException: Für jdbc: Microsoft: sqlserver wurde kein geeigneter Treiber gefunden

Ich erhalte diese Ausnahme, wenn ich versuche, dieses Programm auszuführen. Es ist eines der Microsoft-Beispiele. Ich habe die sqljdbc4.jar zu dem Klassenpfad in netbeans für compile und Run über die Projekteigenschaften hinzugefügt. Ich habe auch getestet, dass die Klasse mithilfe einer import -Anweisung unten gefunden werden konnte - kein Fehler während des Kompilierens, also muss es das Jar finden.

Könnte es mit einer DLL oder einer SQL-DLL zusammenhängen, auf die die Datei sqldbc4.jar verweist?

Dies ist die genaue Ausnahme und im Folgenden ist der genaue Code angegeben, mit Ausnahme des Passworts.

Ausnahme:

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

}

43
Larry Watanabe

Ihre URL sollte jdbc:sqlserver://server:port;DatabaseName=dbname sein. 
und Klassenname sollten wie com.Microsoft.sqlserver.jdbc.SQLServerDriver sein 
Verwenden Sie MicrosoftSQL Server JDBC Driver 2.0

61
Piyush Mattoo

Es folgt ein einfacher Code zum Lesen aus der SQL-Datenbank . Datenbanknamen sind "database1" . Der Tabellenname ist "table1" . Er enthält die beiden Spalten "uname" und "pass" . Dont Vergessen Sie nicht, "sqljdbc4.jar" zu Ihrem Projekt hinzuzufügen. sqljdbc4.jar herunterladen

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
Fathah Rehman P

Ich hatte den gleichen Fehler, hatte aber eine richtige Verbindungszeichenfolge. Mein Problem war, dass der Treiber nicht benutzt wurde und daher aus dem kompilierten Krieg heraus optimiert wurde.

Stellen Sie sicher, dass Sie den Treiber importieren:

import com.Microsoft.sqlserver.jdbc.SQLServerDriver;

Und um es dann zu zwingen, in den endgültigen Krieg aufgenommen zu werden, können Sie Folgendes tun:

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

Diese Zeile steht in der ursprünglichen Frage. Das wird auch funktionieren:

SQLServerDriver driver = new SQLServerDriver();
1
JeffryHouser

Sie können es wie folgt mit sqljdbc4-2.0.jar versuchen:

 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

Für jemanden, der dasselbe mit maven lösen möchte. Fügen Sie die folgende Abhängigkeit in POM hinzu:

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

Und verwenden Sie den folgenden Code für die Verbindung:

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

Suchen Sie nach dem Link this für andere CRUD-Abfragetypen.

0
Shams