Oracle数据库常见异常错误提示原因

1、error:无效的数字

      原因:预编译的SQL语句(PreparedStatement)中,查询语句的WHERE子句中不能使用“?=?”的形式来模糊查询。

      相关知识点详细解释预编译语句中的占位符“?”,通过“pstmt.setString(1,"str1")”等类似的方法为占位符“?”,赋值,这类方法会直接把java中的类型直接替换成数据库中相对应的类型


示例:


String sql="delete from students where sdutend_id in (?)";
PreparedStatement pstmt = conn.preparStatement(sql);
pstmt.setString(1,"2,3,4");
以上代码并不会把SQL语句转为:

delete from students where student_id in(2,3,4)
而是转为了:

delete from students where student_id in("2,3,4")

2、error:索引中丢失IN或OUT参数

     原因:未在PreparedStatement对象执行SQL语句前,为占位符”?“赋值。


3、SQLException:并非所有变量都已绑定

     原因:在创建PreparedStatement对象时已经绑定了SQL语句,但在该发送对象执行时,又再次指定了SQL语句。

     示例:

     

String sql = "select * from employees";
PreparedStatement pstmt = conn.prepareStatement(sql);
//省略部分代码
pstmt.executeQuery(sql);//再次指定SQL语句报异常

4、SQLException:日期图片格式转换前结束

      原因:SQL语句中给定的要转换的内容 与 指定的转换格式不匹配。

      示例:

INSERT INTO students(birthday) VALUES (TO_DATE('2013-11-23 00:00:00','yyyy-MM-dd')) WHERE student_id=22

5、SQLException:不支持的特性

     原因:可能是JDBC驱动不支持


6、java.lang.ClassNotFoundException: com.mysql.jdbc.Drive 后半部分是您在程序中写的驱动程序的名字。 

      原因:驱动没找到。仔细检查类名是否写错,如果类名没有写错,则是驱动程序所在的压缩包没有引入工程,想办法引入。


7、java.sql.SQLException: No suitable driver 

     原因:创建连接时URL没写对。DriverManeger.getConnection(String url,String user,String password);


以下为部分转载:

8、主机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 
解决方案,查看数据库中列的长度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle2: 1. 《Oracle8 优化技术》摘录 (第一章 安装) 2. 《Oracle8 优化技术》摘录 (第二章 内存-CPU) 3. 《Oracle8 优化技术》摘录 (第三章 输入-输出) 4. EXP、IMP 命令详解 5. Oracle Index 的三个问题 6. Oracle PL-SQL语言基础 7. Oracle的分布式管理 8. ORACLE的数据类型 9. Oracle数据库碎片整理 10.ORACLE性能调整1 11.ORACLE性能调整2 12.Oracle专家调优秘密 13.PL_SQL单行函数和组函数详解 14.PL-SQL 15.PLSQL异常处理初步 16.SQL语句性能调整原则 17.创建和使用分区的表 18.基于成本的优化器一般错误概念和问题 19.Delphi 3_0中连接数据库的三种方式 20.远程数据库的访问 21.监控数据库性能的SQL 22.简单实现数据库表空间的备份或迁移 23.简析REDO LOGFILE 24.理解和使用Oracle 8i分析工具-LogMiner 25.哪些初始化参数最影响Oracle系统性能 26.你的SQL语句在什么情况下使用全表扫描? 27.如何对CLOB行字段执行全文检索 28.如何让你的SQL运行得更快 29.如何使‘CREATE TABLE AS SELECT’能支持ORDER BY 30.删除表内重复记录的方法 31.数据库安全性策略 32.数据库的查询优化技术. 33.提高C-S系统性能的一些方法 34.提高ORACLE数据库系统import性能 35.外部联接的用法 36.性能调试的一般问题 37.优化 38.优化调整Oracle 8i数据库(从操作系统) 39.在Internet上运作公司是一项艰苦的任务--关键任务 40.在oracle中限制返回结果集的大小 41.在远端如何建立standby数据库 42.怎样分析你的SQL语句的效率 43.自动备份Oracle数据库 44.总结SQL语句中的优化提示 45.使用Database Configuration Assistant安装第二个数据库 46.Oracle 数据库向 MS SQL Server 7.0 的迁移 Oracle1: 1. Decode()函数使用技巧(NT+IIS+ASP+ORACLE) 2. Dual伪列 3. EXP、IMP 命令详解 4. Exp-Imp大量数据 5. Export-Import 使用技巧与常见错误 6. NULL 使用详解 7. Oracle for NT系统实用工具介绍 8. Oracle 和 mysql 的一些简单命令对比参照 9. Oracle8i和Microsoft SQL Server7_0比较 10. Oracle8的不安全因素及几点说明 11. Oracle常见错误代码 12. Oracle常用Script 13. Oracle常用数据字典 14. ORACLE回滚段管理(上) 15. ORACLE回滚段管理(下) 16. Oracle基于Client-Server的性能调整 17. Oracle数据库的安全策略 18. ORACLE数据库简介 19. Oracle数据库密码文件的使用和维护 20. Oracle数据库碎片整理 21. Oracle特殊包 22. Oradim工具的用法 23. PB如何连接Oracle数据库 24. ROLLBACK不能回滚的命令 25. 安装Oracle后,经常使用的修改表空间的SQL代码 26. 比较SQL Server与Oracle、DB2 27. 多个数据库时,如何设置默认数据库 28. 各种数据类型的比较 29. 漫谈oracle中的空值 30. 没有备份、只有归档日志,如何恢复数据文件 31. 哪些初始化参数最影响Oracle系统性能 32. 如何查看数据库的字符集 33. 如何启动ARCHIVELOG模式 34. 如何使‘CREATE TABLE AS SELECT’能支持ORDER BY ? 35. 如何使用归

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值