关于JDBC连接SQL 2008的一些问题?

发布于 2021-12-03 05:01:20 字数 3475 浏览 852 评论 8

代码如下:

    

import java.sql.*;

public class ShowSql {
    public static void main(String[] args) {
        String url = "jdbc:sqlserver://localhost:1433;DatabaseName=hah";
        Connection conn=null;
        Statement st = null;
        ResultSet rs = null;
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            System.out.println("loading success!");
            conn = DriverManager.getConnection(url,"sa","admin");
            System.out.println("conn success!");
            st = conn.createStatement();
            rs=st.executeQuery("select top 10 * from Group2");
            while(rs.next()){
                System.out.println(rs.getString("name"));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

报错如下:

    

"C:Program FilesJavajdk-9.0.1binjava" "-javaagent:C:Program FilesJetBrainsIntelliJ IDEA 2017.2.5libidea_rt.jar=11045:C:Program FilesJetBrainsIntelliJ IDEA 2017.2.5bin" -Dfile.encoding=UTF-8 -classpath "D:IprojectTestWebwebWEB-INFclasses;D:JAVAapache-tomcat-9.0.2libservlet-api.jar;E:SQLjdbcMicrosoft JDBC Driver 6.0 for SQL Serversqljdbc_6.0chsjre8sqljdbc42.jar" ShowSql
loading success!
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4098)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3160)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:43)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3123)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7505)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2445)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1981)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:678)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
    at ShowSql.main(ShowSql.java:12)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
    ... 14 more

Process finished with exit code 1
 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

嘦怹 2021-12-09 12:17:08

哦哦,原来是这样,谢谢。

孤独患者 2021-12-09 12:17:05

JDK9作为过渡版本,即将被淘汰,所以稍微稳定点开发,还是以JDK8为主比较好,目前JDK8是长期支持版本,9只能说是个新特性试用品罢了。

瑾兮 2021-12-09 12:16:25

jtds已经多年没有更新了,目前不建议使用。早年是微软JDBC太糟,才很多人使用这个,现在微软的驱动还是及格线以上的。而且注意你的错误 java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverte

4.0没问题,很大可能是因为没有引用javax.xml.bind下面的类而已。你的JDK是9.0,请注意9.0的模块化功能会引发和JDK8的很多不兼容。需要添加VM运行参数 --add-modules java.se.ee(很多人都在JDK9上遇到了找不到DatatypeConverte问题,其实你从DatatypeConverte找不到入手搜索,很多相关信息呢。)

旧伤慢歌 2021-12-09 11:47:52

换jtds驱动吧

倚栏听风 2021-12-09 09:11:45

那这么说就是JDBC的问题咯,感谢啦~

画骨成沙 2021-12-09 06:10:57

回复
ClassNotFoundException ,微软的JDBC驱动比较麻烦,jTDS 适应的版本更强一点。

旧伤慢歌 2021-12-05 05:15:10

微软的驱动太麻烦啦。

一个开源的驱动就搞定SQL Server 2000、2005、2008、2012啦,那就是#jTDS#

想挽留 2021-12-04 05:17:24

我去官网下载JDBC6.0就会出这个错误,去其他地方下载JDCB4.0就不会出这个错误,我的数据库用的是2008版本,不知道和这个有没有关系。请大神指引迷津,感谢!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文