你在控制台把你执行的sql语句打印出来,也许语句是没问题的,如:delete tablename where 1=2

解决方案 »

  1.   

    语句没问题,又遇到同样的情况。表T1 表T2 先insert表T1数据,后insert表T2数据,conn.commit();后,只有表T1数据写入,表T2数据没有insert数据?
      

  2.   

    我的代码如下<%@include file="/include/head/chkusrlogin2.jsp"%>
    <%@ page contentType="text/html; charset=gb2312" %>
    <%@ page import="java.sql.*" %>
    <%@ page import="java.util.*"%>
    <%@ page import="java.util.Date"%>
    <%@include file="/include/tools/Tools.jsp"%>
    <jsp:useBean id="conn" scope="page" class="jcnpc.database.MSqlcon" />
    <jsp:useBean id="conn1" scope="page" class="jcnpc.database.MSqlcon" />
    <%
    if (!conn.Initialization())
    {
        String echo=conn.getHint();
        out.print(echo);  
    }else{
    if (!conn1.Initialization())
    {
        String echo=conn.getHint();
        out.print(echo);  
    }else{
    conn1.setCon();
    conn.setCon(false);
    String hmid=request.getParameter("hmid");
    StringBuffer tmpout=new StringBuffer("");
    String mid=request.getParameter("mid");
    String headlist=request.getParameter("headlist");
    String brief=request.getParameter("brief");
    String commaddr=request.getParameter("commaddr");
    String postman=request.getParameter("postman");
    String title=request.getParameter("title");
    String con=request.getParameter("con");
    String rid=request.getParameter("rid");
    // get date
      GregorianCalendar rootDate=new GregorianCalendar();
      java.util.Date utilDate=rootDate.getTime();
      java.sql.Date CurDate = new java.sql.Date(utilDate.getTime());
      String cur_date=CurDate.toString();
    // 在convert里已getISOStr了
    if (rid==null || rid.equals("") || mid==null || mid.equals("") || headlist==null || headlist.equals("") || brief==null || brief.equals("") || commaddr==null || commaddr.equals("")|| postman==null || postman.equals("")|| title==null || title.equals("")|| con==null || con.equals("") ) {
    response.sendRedirect("/err.jsp?er=0");
    return; 
    }else{
        tmpout.append( "insert into motion(mid,uid,headlist,brief,commaddr,postman,title,con,ifsend,stime) values(" );
        tmpout.append(mid);
        tmpout.append(",");
    tmpout.append(uid);
    tmpout.append(",");
    tmpout.append(convert(headlist));
    tmpout.append(",");
    tmpout.append(convert(brief));
    tmpout.append(",");
        tmpout.append(convert(commaddr));
        tmpout.append(",");
        tmpout.append(convert(postman));
        tmpout.append(",");
    tmpout.append(convert(title));
    tmpout.append(",");
    tmpout.append(convert(con));;
        tmpout.append(",");
    tmpout.append("1");
    tmpout.append(",");
    tmpout.append(convert(cur_date));
        tmpout.append( ")" );
        String add_sql=tmpout.toString();
        tmpout=new StringBuffer("");

          conn.executeUpdate(add_sql);      ResultSet rs_tmpid=conn1.executeQuery("SELECT IDENT_CURRENT('motion') as tmpid");
          
          String tmpid="";
          if (rs_tmpid.next()){
          tmpid=rs_tmpid.getString("tmpid");
          }
          rs_tmpid.close(); if (tmpid==null || tmpid.equals("")){
     response.sendRedirect("/err.jsp?er=0");
     return; 
     }
    // wr chkrec
    tmpout.append( "insert into chkrec(pid,sid,iid,incepttime) values(" );
            tmpout.append(tmpid);
    tmpout.append(",");
    tmpout.append(uid);
    tmpout.append(",");
    tmpout.append(rid);
    tmpout.append(",");
    tmpout.append(convert(cur_date));
            tmpout.append( ")" );
            String add_sql1=tmpout.toString();
            tmpout=new StringBuffer("");

    conn.executeUpdate(add_sql1);
    %>
    <%=add_sql%><br>
    <%=add_sql1%>
    <%
    /*
    if (conn.updateCommit())
    {%>
    <script language=jscript>
    alert("发送成功!");
     <%if (hmid==null || hmid.equals("")){ %>  
    window.location="DraftMotionIndex.jsp";
     <%}else {%>
      window.location="DraftMotionIndex.jsp?mid=<%=mid%>";
      <%}%>
    </script>
    <%      
    }else { %>
    <script language=jscript>
    alert("发送失败!");
    window.history.go(-1);
    </script>
    <%} // if commit   
    */
    }// chk_null
    conn1.closeConn();
    }//if conn1.init
    conn.closeConn();
    }//if conn.init
    %>
      

  3.   

    好像在stmt执行了二次executeUpdate
    下面是我引用的Bean里的部分程序 Statement stmt;
        public boolean executeUpdate(String s)
        {
            try
            {
                stmt = conn.createStatement();
                stmt.executeUpdate(s);
                return true;
            }
            catch(SQLException sqlexception)
            {
                sHint = "executeUpdate:" + sqlexception.getMessage();
    return false;
            }
            
        }请问怎么改动
    解决了立刻给分
      

  4.   

    失败应该要有回滚的代码吧   
    flag1=executeUpdate(....);
    flag2=executeUpdate(....);
    if(flag1>0&&flag2>0)//当两个操作都成功时提交生效
      con.commit();
    else
      con.rollback();//否则回滚 会自动恢复没做任何操作的之前的状态不是你con.setAutoCommit(false);con.commit();用两句话 把操作包起来就有事物功能了
      

  5.   

    我写了,发现第二个executeUpdate返回的是false,这是为什么?我要的是都能执行
      

  6.   

    你的代码还是有问题:
    if (tmpid==null || tmpid.equals("")){
     response.sendRedirect("/err.jsp?er=0");
     return; 
     }-- return了,怎么提交事务,关闭连接呢?