#java #sql-server #jdbc #driver #sqlexception
#java #sql-server #jdbc #драйвер #sqlexception
Вопрос:
Я получаю это исключение при попытке запустить эту программу. Это один из примеров Microsoft. Я добавил sqljdbc4.jar к пути к классу в netbeans как для компиляции, так и для запуска, через свойства проекта. Я также проверил, что класс можно найти с помощью приведенной ниже инструкции import — ошибки во время компиляции нет, поэтому он, должно быть, находит jar.
Может ли это быть связано с dll или какой-либо sql dll, которая sqldbc4.jar ссылки?
Это точное исключение, и ниже приведен точный код, за исключением пароля.
Исключение:
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)
Код:
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();
}
}
Комментарии:
1. привет .. Вы получили решение для этого? Я также сталкиваюсь с такой же проблемой .. пожалуйста, помогите мне
2. Чтобы решить вышеуказанную проблему, проверьте мой простой код ниже…
3. Пожалуйста, загрузите sqljdbc4.jar и поместите в библиотеку Jmeter
Ответ №1:
Ваш URL-адрес должен быть jdbc:sqlserver://server:port;DatabaseName=dbname
и имя класса должно быть похоже com.microsoft.sqlserver.jdbc.SQLServerDriver
Используйте драйвер JDBC сервера MicrosoftSQL 2.0
Комментарии:
1. В путанице виновата старая версия драйвера. В новой версии упоминается соответствующий префикс для использования (jdbc:sqlserver://).
2. У множества веб-сайтов неверный URL. У них есть ‘jdbc: microsoft: sqlserver://server: port;DatabaseName=dbname’ вместо ‘jdbc: sqlserver://server:port;DatabaseName=dbname’
3. Куда вы должны поместить драйвер?
4. Мертвая ссылка на драйвер.
Ответ №2:
Для тех, кто хочет решить то же самое с помощью maven. Добавьте приведенную ниже зависимость в POM:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.0.0.jre8</version>
</dependency>
И используйте приведенный ниже код для подключения:
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();
}
Ищите по этой ссылке запросы другого типа CRUD.
Комментарии:
1. Потрясающе… Для приложения с java 8 это подходящий драйвер. не 8.2.2.jre11, который вызывал у меня чертовски много проблем с подключением.
Ответ №3:
Ниже приведен простой код для чтения из базы данных SQL. Имена баз данных — «database1». Имя таблицы — «table1». Он содержит два столбца «uname» и «pass». Не забудьте добавить «sqljdbc4.jar » для вашего проекта. Загрузить 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();
}
}
}
Комментарии:
1. @Aniket — пожалуйста, вставьте полное исключение, которое вы получили
2. я работаю над веб-приложением в netbeans 7.0.1 Исключение выглядит следующим образом: СЕРЬЕЗНОЕ: Java Runtime Environment (JRE) версии 1.7 не поддерживается этим драйвером. Используйте sqljdbc4.jar библиотека классов, обеспечивающая поддержку JDBC 4.0. СЕРЬЕЗНЫЙ: java.lang. Исключение UnsupportedOperationException: Java Runtime Environment (JRE) версии 1.7 не поддерживается этим драйвером. Используйте sqljdbc4.jar библиотека классов, которая обеспечивает поддержку JDBC 4.0.
3. @Aniket — вы добавляете sqljdbc4.jar для вашего проекта? Если вы уже добавлены sqljdbc4.jar затем убедитесь, что sqljdbc.jar не добавлен в project
4. У меня это работает. Спасибо. Но я заменил Class.forName (драйвер). newInstance(); с DriverManager.registerDriver(новый com.microsoft.sqlserver.jdbc.SQLServerDriver()); и добавил зависимость ‘com.microsoft.sqlserver’ в мой pom в Mavin, чтобы он работал
Ответ №4:
У меня была та же ошибка, но была правильная строка подключения. Моя проблема заключалась в том, что драйвер не использовался, поэтому был оптимизирован из скомпилированной войны.
Обязательно импортируйте драйвер:
import com.microsoft.sqlserver.jdbc.SQLServerDriver;
А затем, чтобы принудительно включить его в финальную войну, вы можете сделать что-то вроде этого:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Эта строка содержится в исходном вопросе. Это также будет работать:
SQLServerDriver driver = new SQLServerDriver();
Ответ №5:
Вы можете попробовать, как показано ниже, с sqljdbc4-2.0.jar:
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"));
}
}
Ответ №6:
Попробуйте добавить архив.JAR в библиотеках проекта NETBEANS . Внимание: Категория проекта должна быть «Ant»