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。