java/sql/SQLClientInfoException

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版本!)替换了本机上的相应文件,再执行程序,就都没问题,成功了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值