近日在使用JdbcTemplate做大量的数据库数据同步的工作,基本就是“从A库查询数据--生成CSV--解析成SQL插入B库”这样一个过程。因为使用的是JdbcTemplate,所以在将数据导入B库时采用的是“先批量删,再批量插入”的策略。如果B库有相同主键的记录,则会先删掉,然后再将数据批量插入,这样就避免了主键冲突异常。这样更新数据量=删除记录数,新增数据量=总数据量-更新数据量。
但是在使用batchUpdate()函数时遇到了执行结果为-2的问题,先查查API:
batchUpdate
public int[] batchUpdate(String[] sql)
throws DataAccessException
Description copied from interface: JdbcOperations
Issue multiple SQL updates on a single JDBC Statement using batching.
Will fall back to separate updates on a single Statement if the JDBC driver does not support batch updates.
Specified by:
batchUpdate in interface JdbcOperations
Parameters:
sql - defining an array of SQL statements that will be executed.
Returns:
[b]an array of the number of rows affected by each statement[/b]
Throws:
DataAccessException - if there is any problem executing the batch
返回值为一个整型的数组,数组的每个元素值对应每条SQL影响的数据库的记录数。
这样无论如何负值也无法理解的。网上查询有地方说是驱动的问题,然后动手用JDBC的PreparedStatement测试了一把,同样的结果。那么说,出现这种结果的根本原因是JDBC驱动。
从Oracle的官网下载了Oracle11gR2的最新驱动ojdbc6.jar,目前问题仍然存在。。。
分享到:
相关推荐
NULL 博文链接:https://rayfuxk.iteye.com/blog/2286519
strut2+spring+springjdbctemplate做的简易登录系统
jdbc批量方法。多个sql语句可以一起执行
spring-jdbcTemplate实例工程
一个非常简单基于注解的Spring JdbcTemplate,供初学者参考用。
Spring JDBCTemplate连接池jar包
Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,...
Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查
模仿spring jdbcTemplate的粗略实现,只有很小的参考价值,如果是java初学者可以使用这个封装好的工具进行数据库操作,只需要在db.properties里配置好driver,url等信息
spring JdbcTemplate query方法使用示例,欢迎下载借鉴
Spring JdbcTemplate的操作,包括接口,BaseDao,log4J配置文件,主要为oracle数据库操作,很多特殊方法只对oracle有效
Spring-JdbcTemplate
Spring框架JdbcTemplate类中查询方法介绍
Spring的JdbcTemplate插入操作返回主键ID的方法 - - ITeye技术网站
SSH笔记-Spring JdbcTemplate,使用JdbcTemplate对数据库进行操作,使用具名参数和JDBC模板,简化操作
使用Spring的JdbcTemplate实现分页功能
JdbcTemplate api 下载 Spring
SpringJdbcTemplate封装工具包,包括规范model格式接口,封装SpringJdbcTemplate,实现分页,自适应多种数据库
1.Spring4前 spring-jdbc包是独立的,4以后spring-jdbc 就已经没有了
使用Spring的JdbcTemplate调用Oracle的存储过程