JSP更新数据库出错,错在哪?
配置:tomcat 5.0.23,sqlserver2000,win2000
程序如下:
1、 <%@ page contentType= "text/html; charset=utf-8 " language= "java " import= "java.sql.* "%>
2、 <%@ page import= "com.Condata "%>
3、 <%@ page import= "java.util.Date "%>
4、 <%Condata con=new Condata();
5、Connection conn=con.getConnection();
6、String gxid= " ",gxname= " ";
7、int ibt1=Integer.parseInt(request.getParameter( "ibt1 "));//在40至100间
8、int ret=0;
9、for(int ibt=1;ibt <ibt1;ibt++){
10、gxid=request.getParameter( "gxid "+ibt);
11、gxname=request.getParameter( "gxname "+ibt);
12、ret=0;
13、ret=con.executeUpdate( "update "+session.getAttribute( "company ")+ "_rsjijian set gxname= ' "+gxname+ " ' where rtrim(gxid)= ' "+gxid+ " ' ");//符合条件的记录约有10几条
14、if(ret==0){
15、out.println( " <script Language= 'javascript '> alert( '(2)数据有误!修改失败,请重试 ');window.history.back(-1); </script> ");
16、return;
17、}
18、}
19、。。。//略
错误为当循环ibt到某个数时(每次都不同),就无法更新。
单个的update试过无问题。
请各位给找找原因。谢谢
------解决方案--------------------你在Update之后,为什么不提交,有没有可能是因为数据库事务造成的。再更新同一个表的时候,有没有可能执行的SQL语句锁定同一行?但是没有提交,形成死锁?
------解决方案--------------------这个问题和列表更新问题类似,看看你的列表中的表单:
gxidi和gxnamei的命名格式是否正确
实在不行的话,在每次执行update之前
打印:update "+session.getAttribute( "company ")+ "_rsjijian set gxname= ' "+gxname+ " ' where rtrim(gxid)= ' "+gxid+ " ' "
然后把打印出来的字符串逐个在数据库中执行,看看是否都能执行成功
------解决方案--------------------你提交过来的条件会不会含有单引号?
set gxname= ' "+gxname+ " ' where rtrim(gxid)= ' "+gxid+ " ' ");
改成下边吧:
set gxname= ' "+gxname.replaceAll( " ' ", " ' ' ")+ " ' where rtrim(gxid)= ' "+gxid.replaceAll( " ' ", " ' ' ")+ " ' ");
最好是用PreparedStatement
另外,if(ret==0){满足条件的时候,最后break吧,return会不会有问题?