jdbc 大数据量批量更新,执行到pstmt.executeUpdate();报错,在线急等!

fendouxiaoqingnian 2013-08-28 10:54:11
//注册驱动
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());
}
...全文
206 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧