【发布时间】:2019-03-13 23:14:19
【问题描述】:
我正在尝试建立从 java 到 sql server 的连接。我正在使用 jdk 8 1.8 和 sql server 2014,这是我的代码:
package test.prova;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Provaconn {
public static void main(String[] args) throws Exception {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection m_Connection = DriverManager.getConnection(
"jdbc:microsoft:sqlserver://srvdatiorim14.saga.locale;DatabaseName=mydbname", "myuser", "mypw");
Statement m_Statement = m_Connection.createStatement();
String query = "SELECT * FROM trasco_proprieta";
ResultSet m_ResultSet = m_Statement.executeQuery(query);
while (m_ResultSet.next()) {
System.out.println(m_ResultSet.getString(1) + ", " + m_ResultSet.getString(2) + ", "
+ m_ResultSet.getString(3));
}
}
但我收到以下错误:
Exception in thread "main" java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at test.prova.Provaconn.main(Provaconn.java:10)
我已经搜索了各种主题的解决方案,我尝试了很多各种调整,但仍然出现此错误。 我还从 maven 依赖项和外部库中导入了 jdbc 驱动程序 jar(如您所见,我尝试了它的不同版本):
关于如何解决这个问题的任何建议?吨 谢谢, 塞尔夫
编辑 - 已解决
在将 Class.forName 更改为答案中的一个建议后,我还修改了错误的 url。改成
jdbc:microsoft:sqlserver://...
到
jdbc:sqlserver//...
【问题讨论】:
-
它必须在你的类路径中
-
请检查类路径中需要的类。在屏幕上,我看到了 2 个版本的 mssql jar。您应该删除项目中添加的所有 jar 依赖项。使用 maven 添加依赖并使用命令重新导入 maven 依赖: mvn eclipse:eclipse
-
它已经在类路径中。我现在按照答案中的建议更改了 che class forName,我现在得到的错误是:线程“main”中的异常 java.sql.SQLException:找不到适合 jdbc:microsoft:sqlserver 的驱动程序...我还删除了重复的依赖,只保留 sqljdbc 4.2
-
顺便说一句,您使用的是相当旧的驱动程序版本(2.0 版)。您可能需要考虑升级到更新版本(Java 10 及更高版本为 7.0,Java 7、8 和 9 为 6.4)。
-
@MarkRotteveel 我必须使用 java 8,所以我只是尝试按照您的提示将 jdbc 6.4 放入 maven 依赖项中。我删除了 4-2.0,除此之外我没有编辑任何内容,我再次遇到第一个错误..也许是因为我必须再次将新错误添加到类路径中?如果它由 maven 依赖项管理,我该怎么做?