JDBC MSSQL类加载编译错误[重复]
Posted
技术标签:
【中文标题】JDBC MSSQL类加载编译错误[重复]【英文标题】:JDBC MSSQL class loading compilation error [duplicate] 【发布时间】:2019-08-28 03:31:08 【问题描述】:我一直在尝试在 IntelliJ 上运行以下代码,但即使我尝试将 MSSQL JDBC 驱动程序添加到模块依赖项或全局库中,它似乎也不起作用。
public class Main
public static void main(String[] args)
testConnection();
public static boolean testConnection()
final String DEFAULT_DRIVER_CLASS = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
try
Class.forName(DEFAULT_DRIVER_CLASS);
Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;database=testApp");
String query = "Select * from Employee";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query);
if (rs!=null)
System.out.println(rs);
return true;
System.out.println(rs);
return false;
catch (ClassNotFoundException e)
e.printStackTrace();
return false;
catch (SQLException e)
e.printStackTrace();
return false;
好像一直有SQLException,这是堆栈跟踪:
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user ''. ClientConnectionId:1e971545-e8a0-4361-b033-29758a00df94
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262)
at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:258)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:104)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:5036)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3668)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3627)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7194)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2935)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2456)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2103)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1950)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1162)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:735)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:251)
at Main.testConnection(Main.java:16)
at Main.main(Main.java:9)
我从数据源复制了 url 并将其用于 getConnection()。
【问题讨论】:
将您的代码和堆栈跟踪直接发布到问题中。没有图像或屏幕截图。 您是否尝试解决其他编译错误?您可以使用 try-catch 临时包围数据库连接逻辑。 我刚刚编辑了我上面的帖子,希望对您有所帮助。只有一个编译错误是 jdbc。 这是一个编译错误。它与 JDBC 或 MSSQL“不工作”无关。注意Class.forName()
行自 2007 年以来就不再需要了。
我已经编辑了我的问题以澄清我的问题,很抱歉给大家带来了困惑
【参考方案1】:
问题在于testConnection
方法的方法签名。写在下面;
public boolean testConnection() throws Exception
...
在你的main
方法中也做同样的事情。
【讨论】:
感谢您的回复,但问题是 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");应该能够找到“com.microsoft.sqlserver.jdbc.SQLServerDriver”类,因为我已将 jbdc 驱动程序(jar 文件)添加为库或模块依赖项。您的解决方案只是一种解决方法,因此代码可以编译,但我想连接到数据库。 @TienNguyen 不。这不是“解决方法”,而是需要更改代码。目前您唯一的问题是您的代码无法编译,这将解决它。你不知道你是否可以连接,直到你解决这个问题你才能知道。吵架前先试试。最好声明所有可以抛出的实际异常,包括ClassNotFoundException
,而不是仅仅声明throws Exception
。
很抱歉,我刚刚尝试按照您所说的捕获异常。我完全是个菜鸟,我之前确实误解了你。我已经编辑了我的问题,如果你能看看并帮助我解决问题,我将不胜感激。以上是关于JDBC MSSQL类加载编译错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 mysql 运行 JDBC 程序时出现此错误 [重复]