开发者社区> 问答> 正文

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

代码如下:

    

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 Files\Java\jdk-9.0.1\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\lib\idea_rt.jar=11045:C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\bin" -Dfile.encoding=UTF-8 -classpath "D:\Iproject\TestWeb\web\WEB-INF\classes;D:\JAVA\apache-tomcat-9.0.2\lib\servlet-api.jar;E:\SQL\jdbc\Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_6.0\chs\jre8\sqljdbc42.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
 

展开
收起
爱吃鱼的程序员 2020-06-07 18:10:02 1019 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>我去官网下载JDBC6.0就会出这个错误,去其他地方下载JDCB4.0就不会出这个错误,我的数据库用的是2008版本,不知道和这个有没有关系。请大神指引迷津,感谢!</p>
    
                    
    
                        <p>微软的驱动太麻烦啦。</p>
    

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

                                回复 <a class="referer" target="_blank">@Dxxd</a>  : ClassNotFoundException ,微软的JDBC驱动比较麻烦,jTDS 适应的版本更强一点。
                        
    
                            那这么说就是JDBC的问题咯,感谢啦~
                        
    
                        换jtds驱动吧 
                    
    
                        <p>jtds已经多年没有更新了,目前不建议使用。早年是微软JDBC太糟,才很多人使用这个,现在微软的驱动还是及格线以上的。而且注意你的错误 java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverte</p>
    

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

                        <p>JDK9作为过渡版本,即将被淘汰,所以稍微稳定点开发,还是以JDK8为主比较好,目前JDK8是长期支持版本,9只能说是个新特性试用品罢了。</p>
    
                    
    
                            哦哦,原来是这样,谢谢。
    
    2020-06-07 18:10:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载