`
itwayq
  • 浏览: 17752 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

java/sql/SQLClientInfoException

    博客分类:
  • JDBC
阅读更多
MySQL数据库连接:java/sql/SQLClientInfoException(2009-08-11 17:26:44)
转载标签:杂谈 分类:计算机技术
今天在Java+Eclipse平台是试验MySQL数据库连接时出现了无法连接的异常,具体提示的错误如下:

Driver loaded    //有这一句输出,应该是Driver找到了吧!
Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/SQLClientInfoException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.mysql.jdbc.ConnectionImpl. <clinit>(ConnectionImpl.java:213)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:283)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)





网络上也有相关的JSP连接MySQL数据库出现异常的情况,大概的错误如下所示:

javax.servlet.ServletException: java/sql/SQLClientInfoException
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:673)
org.apache.jsp.sss_jsp._jspService(sss_jsp.java:128)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)



写的数据库连接源代码类似:

public static void main(String[] args) {

  Connection con;

  try {

   
     Class.forName("com.mysql.jdbc.Driver"); // 方式1

     // Class.forName("com.mysql.jdbc.Driver").newInstance();//方式2

     // Class.forName("org.gjt.mm.mysql.Driver");//方式3:为了兼容旧的MySQL

     // Class.forName("org.gjt.mm.mysql.Driver").newInstance();//方式4:为了兼容旧的MySQL


   
     // DriverManager.registerDriver(new com.mysql.jdbc.Driver());//方式1

     // DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());//方式2[color=green][/color]


     System.out.println("-->MySQL数据库驱动加载成功!");// 测试到哪里出现异常!


   
   
     String dbUrl = "jdbc:mysql://localhost:3306/testdb";

     // String dbUrl = "jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=GB2312";

     String dbUser = "root"; // 用户名

     String dbPwd = "root123"; // 密码

     con = java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPwd);// 建立数据库连接


   
     // String dbUrl="jdbc:mysql://localhost:3306/mysql?user=root&password=root123";

      // // String

      // dbUrl="jdbc:mysql://localhost:3306/mysql?user=root&password=root123&useUnicode=true&characterEncoding=gb2312";

      // con = DriverManager.getConnection(dbUrl);


      System.out.println("已经成功连接上MySQL数据库'testdb'......\n"

                              + con.toString());

} catch (ClassNotFoundException ex) {

    // TODO Auto-generated catch block

    ex.printStackTrace();

} catch (SQLException ex) {

    // TODO Auto-generated catch block

    ex.printStackTrace();

}

}



我使用的MySQL数据库驱动包为:mysql-connector-java-5.1.5-bin.jar,JDK的版本为:“java version "1.6.0-rc-b66"”。

错误解决的思路是:根据错误提示的找不到类“java/sql/SQLClientInfoException”信息,首先确认该JDK版本是否有SQLClientInfoException类(根据网络上的介绍,此类别要JDK6以上版本才有!)。虽然JDK6-API中是有该类文件,但不见得您机器上安装的JDK6就有该文件(JDK6以下的版本更不可能有该类别了),一个便捷的确认方式是到您机器上的JDK安装路径下,查看“\src.zip”源文件包中路径"java/sql/"下是否有源文件“SQLClientInfoException.java”如果没有,那则说明你装的JDK中没有该类文件(以本人机器上的JDK为例,虽然是1.6版本【“java version "1.6.0-rc-b66"”】,但就是没有该类文件),因此,在进行数据库连接时老是出现“java/sql/SQLClientInfoException”相关的异常!我拷贝一个较高版本的“%JAVA_HOME%/jrelib/rt.jar”文件(含有"java/sql/SQLClientInfoException"类文件的JDK版本!)替换了本机上的相应文件,再执行程序,就都没问题,成功了!
分享到:
评论
1 楼 hotsmile 2012-02-16  
我用了你的方法试过,错误依然,应该不是这个问题!!!

相关推荐

Global site tag (gtag.js) - Google Analytics