因为数据库的处理速度是非常惊人的 单次吞吐量很大 执行效率极高
addBatch()把若干sql语句装载到一起,然后一次送到数据库执行,执行需要很短的时间
而pstmt.executeUpdate() 是一条一条发往数据库执行的 时间都消耗在数据库连接的传输上面
举个例子可以帮助理解:
我这有一台超大功率的面粉加工机,前者相当于 把所有农户袋装的麦子收集起来用卡车一次送往加工厂 后者相当于农户排好队用同样的卡车一人一人的往加工厂送麦子 麦子加工5分钟完成,但是每个人到工厂就得3小时,我数据库执行效率再高也没用,时间都耗在传输的路上了!!
这就出现了数据传输的性能瓶颈 addBatch就是为解决这样的问题而产生的!
如果成批地处理插入和更新 *** 作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():PreparedStatement pstmt3D null
try {
((OraclePreparedStatement)
pstmt).setExecuteBatch(30)
...
pstmt.executeUpdate()
}
name是MySQL保留字,原则上不应用作字段名或库名,如果非用不可,那在使用时要给它用反单引号(即`,也就是大键盘数字键1左边的那个键)括起来。所以你试试 setString(1, "`name`") 看还会不会出错。条件允许的话,还是建议你尽量更改数据库的字段名name,比方说可以改为name1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)