java开发数据库相关异常

关注日志中出现的Could not get JDBC Connection,JDBCException

此时需要查看数据库连接请求、是否连接数过大,是否出现死锁、查看数据库日志定位具体SQL

除以上原因之外,以下几点也是项目在数据库方面容易出现的异常:

1. SQLException与sql语句相关的错误,如:

原因:

(1)约束错误

(2)关闭的连接(线程绑定以后,当在DAO里将连接关闭以后在业务层无法调取commit()与rollback())

(3)表名、列名书写错误:把sql语句在数据库中运行一次,检查是否出错

2.Io 异常: The Network Adapter could not establish the connection

原因:

(1)oracle服务的监听器问题

(2)oracle:jdbc:thin:@ip 问题

3.空指针(空引用)异常 : java.lang.NullPointerException

原因:

(1)字符串变量未初始化

(2)接口类型的对象没有用具体的类初始化

(3)引用本身为空却调用了方法,可能未创建连接对象

解决异常的思想:

例:

系统查询表记录时出现“java.sql.SQLException: 无法转换为内部表示”异常,抛出的异常信息如下:

java.sql.SQLException:

at oracle.jdbc.driver.CharCommonAccessor.getLong(CharCommonAccessor.java:297)

at oracle.jdbc.driver.T4CVarcharAccessor.getLong(T4CVarcharAccessor.java:852)

at oracle.jdbc.driver.OracleResultSetImpl.getLong(OracleResultSetImpl.java:971)

at oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:440)

at org.apache.commons.dbcp.DelegatingResultSet.getLong(DelegatingResultSet.java:278)

at org.apache.commons.dbcp.DelegatingResultSet.getLong(DelegatingResultSet.java:278)

at ismp.RealNameLibController$_closure2.doCall(RealNameLibController.groovy:34)

at ismp.RealNameLibController$_closure2.doCall(RealNameLibController.groovy)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:745)

看异常信息中的oracle.jdbc.driver.CharCommonAccessor.getLong,此条堆栈信息是的描述的是数据库查出的数据转换为Long类型时失败。经检查数据库表结果中的字段类型及实体类中定义的数据类型。发现在实体类中的ID定义为Long类型,而数据库中对应的字段为varchar2类型。因此导致数据库在进行映射时发生异常。类似常见的问题如:数据库里为Number,而Java定义的对应属性类型为String。

问题处理步骤总结:

1、通过异常信息查找对应的错误字段(比如此例中的getLong);

2、逐一对照实体类和数据库中为Long类型的数据;

3、确认转换关系是否对应,调整数据库字段类型或实体类字段类型;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值