Spring Jdbc对oracle10g数据库做queryForRowSet操作的问题

使用Spring JDBC对Oracle10g进行查询操作时出现了异常,代码与错误信息如下:
代码:
String sql = "select * from t_customer";
SqlRowSet rowSet = new JdbcTemplate(this.dataSource).queryForRowSet(sql);

后台异常:
StatementCallback; uncategorized SQLException for SQL [select * from T_customer]; SQL state [null]; error code [0]; Invalid scale size. Cannot be less than zero; nested exception is java.sql.SQLException: Invalid scale size. Cannot be less than zero

该方法使用Sql Server是没有问题的。
在网上查看相关资料,得到以下解决方法:

public class SqlRowSetOracleResultSetExtractor implements ResultSetExtractor {
public Object extractData(ResultSet rs) throws SQLException {
return createSqlRowSet(rs);
}
}
protected SqlRowSet createSqlRowSet(ResultSet rs) throws SQLException {
CachedRowSet rowSet = newCachedRowSet();
rowSet.populate(rs);
return new ResultSetWrappingSqlRowSet(rowSet);
}
protected CachedRowSet newCachedRowSet() throws SQLException {
return new OracleCachedRowSet();
}

然后将原来代码改成如下即可:
SqlRowSet rowSet = (SqlRowSet)new JdbcTemplate(this.dataSource).query(sql, new SqlRowSetOracleResultSetExtractor());

上述方法经本人测试确实可行,附oracle10g的驱动jar包ojdbc14.jar(OracleCachedRowSet类需要)。
相关文章参见:[url]http://www.hezubbs.cn/html/java/200905/Spring-JDBCduiOracle10gshujukucaozuoshiRowSetdewenti_5994.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值