1、addBatch批处理:
smt.addBatch(sql1);
smt.addBatch(sql2);
smt.addBatch(sql3);
smt.executeBatch();
注意:使用批处理需要注意查询、添加、修改不能使用同一个Statement,否则会报异常:
java.sql.SQLException: 批处理中出现错误: batch must be either executed or cleared
批处理能同时处理insert和update操作。
2、循环遍历ResultSet:
当使用while(rs.next())遍历到最后一行的时候,如果没有重新回到第一行,下次再使用rs会从最后一行读取数据,会造成没有数据可读。
解决办法:
st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
while(rs.next()){
......
}
rs.beforeFirst();
3、不能使用同一个Statement对两个表进行查询:
下面这种处理,会造成zszd_rs和gwzd_rs都没有数据。
st = conn.createStatement();
String zszd_sql = "select * from HR_ZSZD";
zszd_rs = st.executeQuery(zszd_sql);
String gwzd_sql = "SELECT * FROM HR_GWZD";
gwzd_rs = st.executeQuery(gwzd_sql);
4、异常:java.sql.SQLException: 结果集已耗尽
ResultSet原本就没有数据。或者遍历到结尾后,又使用ResultSet。