knrt.net
当前位置:首页 >> prEpArEDstAtEmEnt 批处理 问题(只插入了一条) >>

prEpArEDstAtEmEnt 批处理 问题(只插入了一条)

你第一个 pstmt AddBatch 以后,又重新建立了一个 pstmt ,最后的那个pstmt.executeBatch(); 执行了,前一个已经没有引用可以被垃圾回收了,肯定不会插入了别用一个PreparedStatement了,使用两个 PreparedStatement ,每一个放一条SQL语句,再试一下

执行插入语句或修改语句时应该是ps.executeUpdate();方法吧.查询语句使用ps.executeQuery();

使用一次,关一次.因为每次执行的sql语句都不一样,导致PreparedStatement对象不同.另外,一般是一个方法处理一个操作,那样更清晰

看控制台的输出,既然第一个可以,第二个不行,那就是有可能是user这个对象有错误,可能是没有得到值而返回null,自然就没有插入的数据.总之,看好控制台输出报错:)

1.你创建了100个PS的实例,但是你只关闭了最后一个.1楼说的GC会回收另外99个,没错,但GC能自动回收的只是JAVA创建的资源.preparedstatement为jdbc得api,他还会创建跟具体数据库有关的其他资源.close方法就是用来施放那些资

如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间.Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理.我们可以使用addBatch()和executeBatch()

prepareStatement方法返回的当然是实例化对象,java.sql包下的PreparedStatement是一个接口,实现方式交给具体的数据库驱动.以mysql为例.在com.mysql.jdbc包下有PreparedStatement类,实现了java.sql包下的PreparedStatement.public

addBatch()将一组参数添加到此 PreparedStatement 对象的批处理命令中. 所以每设置一组值后调用一下该方法,最后调用executeBatch()执行批处理.将所有数据批量插入到数据库中

事务是不是没有开启啊?感觉你写的事务不对,conn是个连接吧

我没遇到这个问题,给你查了下,有一下几种版本:1)换驱动. 去下载JdbcDriver驱动(默认的是JdbcOdbcDriver驱动)<个人认为这个比较靠谱>2)用trim()去空格<有人反映说不行>3)数据库的字段弄成varchar<估计不行> 建议你试试第一种,我看了下我用的驱动就是jdbcDriver的,没有遇到空格的问题.

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com