如何在一页面中提交六百条update语句(oracle数据库)

sarage 2003-12-12 10:45:55
我在一个页面中要提交六百条的update语句。我想用addBatch方法把语句一条条的加进去然后用executeBatch一次性提交,但会报这样奇怪的错误:
Exception:
java.lang.NumberFormatException:
at java.lang.Integer.parseInt(Integer.java:430)
at java.lang.Integer.parseInt(Integer.java:458)
at java.sql.Date.valueOf(Date.java:94)
at _time._af._af__result2._jspService(_af__result2.java:100)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java)
at oracle.jsp.JspServlet.internalService(JspServlet.java)
at oracle.jsp.JspServlet.service(JspServlet.java)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
at org.apache.jserv.JServConnection.processRequest(JServConnection.java:314)
at org.apache.jserv.JServConnection.run(JServConnection.java:188)
at java.lang.Thread.run(Thread.java:479)

有的时候会说“无法找到页面”。
有什么方法么?
我用的unix+apache1.2+java1.2。
...全文
172 25 打赏 收藏 举报
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zxdhaha 2003-12-16
还有一个数字类型错误
你所转化的字符串不是数字类型,你检查一下
  • 打赏
  • 举报
回复
zxdhaha 2003-12-16
to_date('2003-12-12','yyyy-mm-dd hh24:mi:ss')
对应的格式一定要一样
从数据库中读日期型
用getString容易出现日期格式不是所期望的 yyyy-mm-dd 格式
用getObject好一点

  • 打赏
  • 举报
回复
UTF888 2003-12-16
== 批处理
用批处理就可以完成600条的UPDATE语句
  • 打赏
  • 举报
回复
liutang2 2003-12-16
fshmichael(风魍) ( ) 的方法好象比较好点,简单方便
  • 打赏
  • 举报
回复
sarage 2003-12-16
我还是在数据库里写一个procedure,算是解决了问题。
谢谢大家。
  • 打赏
  • 举报
回复
sammy791010 2003-12-15
转化为Integer和Date时出错
  • 打赏
  • 举报
回复
sarage 2003-12-15
那我如何去查错。
我以前是用VC的,习惯用集成环境了。不会调jsp的程序。
  • 打赏
  • 举报
回复
sarage 2003-12-12
我原来也是想用存储过程的,但程序原来是用jsp写的,涉及到大量的判断和计算,如果改写的话工作量比较大,而且出错控制也不方便。
  • 打赏
  • 举报
回复
fshmichael 2003-12-12
private PreparedStatement prestmt = null;
prestmt = sqlwork.conn.prepareStatement(" update table set coun01 = ? ,conu02 = ?");

for (int i = 0;i < 600;i ++){
sqlwork.prestmt.setLong(1,value01);
sqlwork.prestmt.setString(2,value02);
sqlwork.prestmt.executeUpdate();
}
这样估计是比较好的,我原先写了一个程序写sybase数据库两分钟,现在10多秒搞定。
  • 打赏
  • 举报
回复
yangfanatcsdn 2003-12-12
同意
  • 打赏
  • 举报
回复
ladofwind 2003-12-12
为什么不用存储过程啊,
这样效率太低了!!!!!!
  • 打赏
  • 举报
回复
fshmichael 2003-12-12
private PreparedStatement prestmt = null;
prestmt = sqlwork.conn.prepareStatement(" update table set coun01 = ? ,conu02 = ?");

sqlwork.prestmt.setLong(1,value01);
sqlwork.prestmt.executeUpdate();
  • 打赏
  • 举报
回复
yugona 2003-12-12
建议你还是用你批处理比较好,你把代码贴出来啊!
  • 打赏
  • 举报
回复
qjx1208 2003-12-12
用PreparedStatement
这样,oracle就可以预编译你的SQL语句,
然后在循环executeUpdate()
  • 打赏
  • 举报
回复
sarage 2003-12-12
to rainshow(要学习的那样多,时间却那么的少),我在这个页面上没有用到强制转换的函数,只有getString和getDate,但数据库中的字段就是这样的类型,不会出错的吧。
to sunboy_163(阳光) ,怎么用事务,你能不能讲详细一点?我不懂哎。
to gunandrose(有个家妻如玉女儿如花),多谢了,不过我还是想自己弄懂。如果你有什么好的建议请告诉我。
  • 打赏
  • 举报
回复
sunboy_163 2003-12-12
用事务。
  • 打赏
  • 举报
回复
gunandrose 2003-12-12
我代码发给我,我帮你修改
  • 打赏
  • 举报
回复
yugona 2003-12-12
错误提示说:在转化为Integer和Date时出错。
建议把代码贴出来。
  • 打赏
  • 举报
回复
ManFirst 2003-12-12
你的数字字段用了字符,而且数据库在强制转换的时候,出错。
  • 打赏
  • 举报
回复
onizuka5211 2003-12-12
用预编译呀
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2003-12-12 10:45
社区公告
暂无公告