当前位置:  编程技术>java/j2ee

JDBC 程序的常见错误及调试方法

    来源: 互联网  发布时间:2014-10-21

    本文导语:  数据库:MySQL 在编写应用的时候,为了调试程序方便,可以在异常处理代码中把异常信息显示出来,这样可以根据错误提示调试代码。异常处理代码通常可以写成这样: try{ … }catch(Exception e){ System.out.println(e.toString()); } 下面...

数据库:MySQL

在编写应用的时候,为了调试程序方便,可以在异常处理代码中把异常信息显示出来,这样可以根据错误提示调试代码。异常处理代码通常可以写成这样:
try{

}catch(Exception e){
System.out.println(e.toString());
}
下面是一些常见的错误信息:
(1)驱动程序不存在
提示的错误信息如下:
java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
后半部分是您在程序中写的驱动程序的名字。
解决方法:仔细检查类名是否写错,如果类名没有写错,则是驱动程序所在的压缩包没有引入工程,想办法引入。
(2)URL写错
提示的错误信息如下:
java.sql.SQLException: No suitable driver
解决方法:仔细检查URL的格式是否正确,不同数据库的URL格式不同。
(3)主机IP地址不正确或者网络不通
提示的错误信息如下:
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.ConnectException
MESSAGE: Connection timed out: connect

STACKTRACE:

java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.(Unknown Source)
at java.net.Socket.(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:273)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
at com.mysql.jdbc.Connection.(Connection.java:393)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at test.JDBCTest.oracleTest(JDBCTest.java:25)
at test.JDBCTest.main(JDBCTest.java:12)
** END NESTED EXCEPTION **
解决方法:查看IP地址是否正确,网络是否有问题。
(4)端口错误或者数据库服务器没有启动
提示的错误信息如下:
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.ConnectException
MESSAGE: Connection refused: connect

STACKTRACE:

java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.(Unknown Source)
at java.net.Socket.(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:273)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
at com.mysql.jdbc.Connection.(Connection.java:393)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at test.JDBCTest.oracleTest(JDBCTest.java:25)
at test.JDBCTest.main(JDBCTest.java:12)


** END NESTED EXCEPTION **
解决方法:查看端口是否正确,数据库服务器是否启动。
(5)数据库名字不正确
提示的错误信息如下:
java.sql.SQLException: Unknown database 'test2'
解决方法:查看数据库是否存在。
(6)用户名或者口令不正确
提示的错误信息如下:
java.sql.SQLException: Access denied for user 'roo'@'localhost' (using password: YES)
解决方法:确认用户名和口令是否正确。
(7)表名错误
提示的错误信息如下:
java.sql.SQLException: Table 'test.student1' doesn't exist
解决方法:查看表是否存在,表名是否写错。
(8)列名错误
提示的错误信息如下:
java.sql.SQLException: Unknown column 'sid' in 'field list'
解决方案:仔细查看数据库表中的列名。
(9)处理结果集的时候,要获取的列的序号大于列数,或者小于0
提示的错误信息如下:
java.sql.SQLException: Column Index out of range, 4 > 3.
这个错误产生的背景是:数据库表中只有3列,而在取信息的时候使用了rs.getString(4),尤其是在使用循环处理的时候容易犯这样的错误。
(10)执行insert语句的时候,表中的列数与插入语句中的不相同
提示的错误信息如下:
java.sql.SQLException: Column count doesn't match value count at row 1
该错误产生的背景是:数据库表中有3列,而插入的时候给了4个值,SQL语句如下:
insert into student values('0011323','李旭',22,99)。
(11)执行insert语句的时候,主键重复。
提示的错误信息如下:
java.sql.SQLException: Duplicate entry '0011323' for key 1
该错误产生的背景是:1条SQL语句连续执行了两遍,第二遍就出错了。
(12)执行insert语句的时候,值过长
提示的错误信息如下:
java.sql.SQLException: Data too long for column 'id' at row 1
解决方案,查看数据库中列的长度。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • jdbc 连接sybase11.9时出错,错误提示:JZ0D5: 装载协议 com.sybase.jdbc2.tds.tds 时出错
  • Jdbc还是Tomcat的错误?100分
  • mysql数据库的JDBC驱动程序为什么出现错误?
  • [求助]JDBC连接错误
  • 急:ODBC-JDBC桥编程的错误信息
  • 简单的jdbc错误,请大家指正
  • 用jdbc桥做一个连接函数时出现的怪错误!
  • 错误信息:java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver,求解决方案!
  • jdbc使用错误,请高手帮忙。
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 高性能JDBC驱动 DataDirect JDBC Drivers
  • 关于JDBC-ODBC和JDBC的区别
  • 急:ODBC-JDBC桥编程的错误信息 iis7站长之家
  • 访问MS SQL能不能直接用JDBC,如果能相应的JDBC Driver从哪里得到?
  • easy question:jdbc与jdk需要分别安装吗。如何设置jdbc的classpath
  • JDBC 工具包 Midao JDBC
  • 请问JDBC和JDBC-ODBC有什么区别?是不是连接的时候也有所不同。
  • JDBC 驱动程序 Drizzle-JDBC
  • JDBC执行日志 JDBC Logger
  • OLAP数据源的JDBC驱动 Jdbc4Olap
  • 讨论:纯java的JDBC与JDBC-ODBC桥的比较?那种效率高、快?(面向服务端)
  • jdbc1.2 jdbc2.0里面的类是干什么用的?
  • 请问连接本机数据库的JDBC,和连接远程的JDBC有没有区别?
  • jdbc连接数据库,能否有jdbc中的方法进行安全设置:
  • 百万火急:一个 jsp的jdbc的问题,用的是jdbc,odbc桥。
  • 问一个简单的问题,我装了oracle 8.05,我并没有发有发现JDBC这个目录,是不是我要下载jdbc for oracle。
  • java开发数据库,一般是用JDBC-ODBC桥,还是JDBC驱动程序连接数据库呢?
  • 请问有没有mdb的jdbc驱动?我不想用jdbc-odbc了.
  • 请问通过纯jdbc能否联 sqlserver7.0,注意不是通过jdbc-odbc桥,如果能的话,driver在哪里下载?连接的语句怎么写?
  • 关于JDBC, 请哪位大侠帮忙告诉我完整的JDBC的联结方式


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3