jdbc 大数据量批量更新,执行到pstmt.executeUpdate();报错,在线急等!
//注册驱动
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
//使用Thin类型连接到数据库,返回Connnection对象。
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl ", "tcyb_sjqy", "tcyb_sjqy");
//SQL语句
//id, topic, content, post_date, cat_name
String strSql = "update yw_ick_gl t set t.ickmm_md5 = ? where t.sfzh = ? and t.xm = ? ";
//创建PreparedStatement对象
PreparedStatement pstmt = conn.prepareStatement(strSql);
//设定批量提交值
((OraclePreparedStatement)pstmt).setExecuteBatch(3);
Statement stmt = conn.createStatement();
//先清除以前的定义
((OracleStatement)stmt).clearDefines();
//将NUMBER类型转成String类型
((OracleStatement)stmt).defineColumnType(1, Types.VARCHAR);
//获得结果集
ResultSet rs = stmt.executeQuery("select SFZH,xm,ickmm from yw_ick_gl where rownum <=2000 ");
int i = 0;
while (rs.next())
{
System.out.print(rs.getString(1)+"===="+rs.getString(2)+"===="+rs.getString(3)+"====");
System.out.println("");
pstmt.setString(1, md5.getMD5ofStr(rs.getString(3))); //此处加密
pstmt.setString(2, rs.getString(1));
pstmt.setString(3, rs.getString(2));
//下面这条语句不会提交,因为未到批量提交设定值。
pstmt.executeUpdate();
i++;
System.out.println(i);
}
//主动提交
((OraclePreparedStatement)pstmt).sendBatch();
pstmt.clearBatch();
stmt.close();
conn.close();
rs.close();
}catch (Exception e)
{
System.out.println(e.getMessage());
}