webentwicklung-frage-antwort-db.com.de

com.Microsoft.sqlserver.jdbc.SQLServerDriver-Fehler nicht gefunden

Ich versuche, von Java aus eine Verbindung zu meiner SQL Server 2008-Datenbank herzustellen, und ich habe das gleiche Problem mit diesem thread .

String userName = "xxxx";
String password = "xxxx";
String url = "jdbc:sqlserver:xxx.xxx.xxx.xxx;databaseName=asdfzxcvqwer;integratedSecurity=true";
Class.forName("com.Microsoft.sqlserver.jdbc.SQLServerDriver");
connection = DriverManager.getConnection(url, userName, password);

Ich bekomme immer eine ClassNotFoundException Immer wenn ich versuche, den Treiber von Class.forName("com.Microsoft.sqlserver.jdbc.SQLServerDriver"); zu laden

Java.lang.ClassNotFoundException: com.Microsoft.sqlserver.jdbc.SQLServerDriver
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1713)
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1558)
    at Java.lang.Class.forName0(Native Method)
    at Java.lang.Class.forName(Unknown Source)
    at repositories.RepositoryBase.<init>(RepositoryBase.Java:22)
    at repositories.ProductsRepository.<init>(ProductsRepository.Java:13)
    at api.Products.init(Products.Java:31)
    at javax.servlet.GenericServlet.init(GenericServlet.Java:160)
    at org.Apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.Java:1280)
    at org.Apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.Java:1193)
    at org.Apache.catalina.core.StandardWrapper.allocate(StandardWrapper.Java:865)
    at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:136)
    at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:123)
    at org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:472)
    at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:171)
    at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:99)
    at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:936)
    at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:118)
    at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:407)
    at org.Apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.Java:1004)
    at org.Apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.Java:589)
    at org.Apache.Tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.Java:312)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at Java.lang.Thread.run(Unknown Source)

Ich habe sichergestellt, dass die erforderlichen Treiber für jdbc und jtds zur Bibliothek hinzugefügt werden, und CLASSPATH ist ebenfalls festgelegt. Ich bin ehrlich nicht sicher, was hier schief gelaufen ist.enter image description here

Bearbeiten: Auf Vorschlag habe ich versucht, diese jdbc jar herunterzuladen und in meine WEB-INF/lib zu platzieren, und dann meine CLASSPATH-Variable auf diesen Speicherort setzen. Trotzdem passiert das gleiche Problem.enter image description here

Edit2: Egal, eine vollständige Neuinstallation von Eclipse hat es zum Laufen gebracht. Das ist ziemlich frustrierend ...

7
l46kok

Sie benötigen weder jTDS noch JDBC in Ihrem Klassenpfad. Jeder ist erforderlich. Hier brauchen Sie nur sqljdbc.jar.

Ich würde auch vorschlagen, sqljdbc.jar an einem physischen Ort im /WEB-INF/lib-Verzeichnis Ihres Projekts zu platzieren, anstatt es über IDE in den Classpath hinzuzufügen. Dann kümmert sich Tomcat um den Rest. Versuchen Sie auch, Tomcat neu zu starten.

Sie können Jar von: www.Java2s.com/Code/JarDownload/sqlserverjdbc/sqlserverjdbc.jar.Zip herunterladen.

BEARBEITEN:

Da Sie bei der Verbindung Benutzername und Passwort angeben, 

Sie brauchen nur das jdbc:sqlserver://localhost:1433;databaseName=test, das integratedSecurity-Attribut überspringen.

7
Hardik Mishra

Sie sehen hier sqljdbc4.2 Version wie: 

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

für sqljdbc4 version-Anweisung sollte jedoch lauten:

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

Ich denke, wenn Sie Ihre erste Version ändern, um die richtige Class.forName , Zu schreiben, wird Ihre Anwendung ausgeführt.

4
tanpham

Für mich hat es funktioniert, sobald ich mich geändert habe

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

zu:

in POM

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

und dann:

import com.Microsoft.sqlserver.jdbc.SQLServerDriver;

...

DriverManager.registerDriver(SQLServerDriver());    
Connection connection = DriverManager.getConnection(connectionUrl); 
3
hestellez

intellij idea 2019

  1. Laden Sie den Microsoft JDBC-Treiber für SQL Server herunter

( https://docs.Microsoft.com/en-us/sql/connect/jdbc/download-Microsoft-jdbc-driver-for-sql-server?view=sql-server-2017 )

  1. Entpacken ("C:\opt\sqljdbc_7.2\enu\mssql-jdbc-7.2.2.jre11.jar")
  2. Hinzufügen; (Datei-> Projektstruktur-> Globale Bibliotheken)
  3. Verwenden; (Hinzufügen von Jar-Dateien zum IntellijIdea-Klassenpfad (siehe Video)) add import com.Microsoft.sqlserver.jdbc.SQLServerDriver; enter image description herehttps://youtu.be/-2hjxoRKsyk

oder ub Gradle set "compile" compile group: 'com.Microsoft.sqlserver', name: 'mssql-jdbc', version: '7.2.2.jre11'

0

Für mich war es eine falsche Maven-Abhängigkeitsverzögerung, also hier der richtige Weg:

für sqljdbc4 verwenden Sie: sqljdbc4-Abhängigkeit

<dependency>
    <groupId>com.Microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency>

für sqljdbc42 verwenden Sie: sqljdbc42-Abhängigkeit

<dependency>
    <groupId>com.Microsoft.sqlserver</groupId>
    <artifactId>sqljdbc42</artifactId>
    <version>6.0.8112</version>
</dependency>
0
dorony

Bei mir funktionierte es nach dem manuellen Kopieren der Datei sqljdbc4-2.jar in den Ordner WEB-INF/lib . Versuchen Sie es bitte auch.

0
raji

hier ist deine Antwort

String userName = "xxxx";
    String password = "xxxx";
    String url = "jdbc:sqlserver:xxx.xxx.xxx.xxx;databaseName=asdfzxcvqwer;integratedSecurity=true";

    try {
            Class.forName("com.Microsoft.sqlserver.jdbc.SQLServerDriver");
            connection = DriverManager.getConnection(url, userName, password); 

  } catch (Exception e)
  {
     e.printStackTrace();
  }
0
berdohan
public static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=dbName";
public static final String USERNAME = "xxxx";
public static final String PASSWORD = "xxxx";

/**
 *  This method
    @param args     command line argument
*/
public static void main(String[] args)
{
   try
   {
        Connection connection;
        DriverManager.registerDriver(new com.Microsoft.sqlserver.jdbc.SQLServerDriver());   
        connection = DriverManager.getConnection(MainDriver.URL,MainDriver.USERNAME,
                        MainDriver.PASSWORD);
        String query ="select * from employee";
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(query);
        while(resultSet.next())
        {
            System.out.print("First Name: " + resultSet.getString("first_name"));
            System.out.println("  Last Name: " + resultSet.getString("last_name"));                
        }
   }catch(Exception ex)
   {
        ex.printStackTrace();
   }
}
0
Tabish Ali