JDBC 程序的常见错误及调试方法
生活随笔
收集整理的這篇文章主要介紹了
JDBC 程序的常见错误及调试方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
詳細介紹:http://dev.mysql.com/doc/refman/5.5/en/error-handling.html
http://dev.mysql.com/doc/refman/5.5/en/error-messages-client.html
http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html
搜索關鍵詞:JDBC MySQL Error Messages
實例:http://www.java2s.com/Code/Java/Database-SQL-JDBC/MySQLErrorcodeandmessage.htm
搜索關鍵詞:MySQL Error code and message
本文是《Java Web開發教程——入門與提高篇(JSP+Servlet)》一書《第9章 JDBC技術》的補充內容。 數據庫: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.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273) at com.mysql.jdbc.Connection.createNewIO(Connection.java:1639) at com.mysql.jdbc.Connection.<init>(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.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273) at com.mysql.jdbc.Connection.createNewIO(Connection.java:1639) at com.mysql.jdbc.Connection.<init>(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 解決方案,查看數據庫中列的長度。
http://dev.mysql.com/doc/refman/5.5/en/error-messages-client.html
http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html
搜索關鍵詞:JDBC MySQL Error Messages
實例:http://www.java2s.com/Code/Java/Database-SQL-JDBC/MySQLErrorcodeandmessage.htm
搜索關鍵詞:MySQL Error code and message
本文是《Java Web開發教程——入門與提高篇(JSP+Servlet)》一書《第9章 JDBC技術》的補充內容。 數據庫: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.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273) at com.mysql.jdbc.Connection.createNewIO(Connection.java:1639) at com.mysql.jdbc.Connection.<init>(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.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273) at com.mysql.jdbc.Connection.createNewIO(Connection.java:1639) at com.mysql.jdbc.Connection.<init>(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 解決方案,查看數據庫中列的長度。
?
轉載于:https://www.cnblogs.com/blogsme/p/3177374.html
總結
以上是生活随笔為你收集整理的JDBC 程序的常见错误及调试方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 40个最好的Tumblr主题
- 下一篇: [原]NYOJ-开灯问题-77