java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver
Solution 1
Your URL should be jdbc:sqlserver://server:port;DatabaseName=dbname
and Class name should be like com.microsoft.sqlserver.jdbc.SQLServerDriver
Use MicrosoftSQL Server JDBC Driver 2.0
Solution 2
For someone looking to solve same by using maven. Add below dependency in POM:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.0.0.jre8</version>
</dependency>
And use below code for connection:
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();
}
Look for this link for other CRUD type of queries.
Solution 3
Following is a simple code to read from SQL database. Database names is "database1". Table name is "table1". It contain two columns "uname" and "pass". Dont forget to add "sqljdbc4.jar" to your project. Download 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();
}
}
}
Solution 4
I was having the same error, but had a proper connection string. My problem was that the driver was not being used, therefore was optimized out of the compiled war.
Be sure to import the driver:
import com.microsoft.sqlserver.jdbc.SQLServerDriver;
And then to force it to be included in the final war, you can do something like this:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
That line is in the original question. This will also work:
SQLServerDriver driver = new SQLServerDriver();
Larry Watanabe
I've done research in artificial intelligence, machine learning, specifically constructive induction and structural decision trees, worked for a variety of companies such in business intelligence, forms automation, and banking. http://www.google.com/profiles/larrywatanabe , http://stackoverflow.com/users/118860/larry-watanabe , http://larrywatanabe.blogspot.com , http://portal.acm.org/citation.cfm?id=125337 , http://www.programmersheaven.com/user/larrywatanabe/ , http://www.informatik.uni-trier.de/~ley/db/indices/a-tree/w/Watanabe:Larry.html , http://portal.acm.org/citation.cfm?id=211243 , http://www.interaction-design.org/references/authors/larry_watanabe.html Last activity , http://www.aaai.org/Papers/AAAI/1990/AAAI90-131.pdf , http://www.wipo.int/pctdb/en/wo.jsp?wo=2004107121
Updated on July 08, 2022Comments
-
Larry Watanabe almost 2 years
I'm getting this exception when I try to run this program. It's one of the Microsoft examples. I've added the sqljdbc4.jar to the classpath in netbeans for both compile and Run, via the project properties. I also tested that the class could be found by using an import statement below - no error during compile, so it must be finding the jar.
Could it be related to a dll or some sql dll that the sqldbc4.jar references?
This is the exact exception, and below is the exact code, except for password.
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(); }
}
-
László van den Hoek about 12 yearsAn old version of the driver is to blame for the confusion. The new version does mention the proper prefix to use (jdbc:sqlserver://).
-
screechOwl about 12 yearsA bunch of websites have the URL wrong. They have 'jdbc:microsoft:sqlserver://server:port;DatabaseName=dbname ' instead of 'jdbc:sqlserver://server:port;DatabaseName=dbname '
-
Fathah Rehman P almost 11 years@Aniket - please paste the complete exception you got
-
Aniket almost 11 yearsi am working on web application in netbeans 7.0.1 Exception is like : SEVERE: Java Runtime Environment (JRE) version 1.7 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0. SEVERE: java.lang.UnsupportedOperationException: Java Runtime Environment (JRE) version 1.7 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.
-
Fathah Rehman P almost 11 years@Aniket - you add sqljdbc4.jar to your project? If you are already added sqljdbc4.jar, then make sure that sqljdbc.jar is not added to project
-
Demodave over 8 yearsWhere are you supposed to put the driver?
-
mcemmy over 5 yearsThis works for me. Thanks. But I replaced Class.forName(driver).newInstance(); with DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver()); and added the dependency 'com.microsoft.sqlserver' in my pom in Mavin for it to work
-
Itération 122442 about 4 yearsDead link to driver.
-
Jyotirmay about 4 yearsAwesome... For application with java 8, this is the appropriate driver. not the 8.2.2.jre11 one which was giving me a hell lot of connection issue.