配置: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试过无问题。
请各位给找找原因。谢谢
程序如下:
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试过无问题。
请各位给找找原因。谢谢
gxidi和gxnamei的命名格式是否正确实在不行的话,在每次执行update之前
打印:update "+session.getAttribute("company")+"_rsjijian set gxname='"+gxname+"' where rtrim(gxid)='"+gxid+"'"
然后把打印出来的字符串逐个在数据库中执行,看看是否都能执行成功
1。gxidi和gxnamei的命名格式是正确的
2。单个的update试过无问题
3。问题我觉得还是出在循环上,因我每次都out.println(ibt),而每次出现停止的ibt都不一样,有可能是比较的数,也有可能是比较大的数。
是否我的语句效率太低导致系统处理不过来?
谢谢
set gxname='"+gxname+"' where rtrim(gxid)='"+gxid+"'");
改成下边吧:
set gxname='"+gxname.replaceAll("'","''")+"' where rtrim(gxid)='"+gxid.replaceAll("'","''")+"'");
最好是用PreparedStatement另外,if(ret==0){满足条件的时候,最后break吧,return会不会有问题?
1、提交的内容没变
2、出现停止的位置不确定,有点像随机率
3、把update的值改为固定值也还是错
谢谢