问题可能在user_id上 上次我也碰到了这样的情况 因为dao里面操作的是id但是数据库里面的id我们已经把它设为了自动增值不允许操作

解决方案 »

  1.   

    问题已解决,通过SQL Server事件探测器监视发现, 每次运行到“con.close();”时会自动产生一个SQL语句“IF @@TRANCOUNT > 0 ROLLBACK TRAN”,即自动加入了事务处理代码。解决办法是在运行“con.close();”前运行一个:
    ////////
               ps = con.prepareStatement("COMMIT");
               ps.execute();
               if (ps != null)
                     ps.close();
    ---------------------------------------
    lykDAO.java文件removeID函数变为(其它函数类似):
    public void removeID(String keyID) {
       
        //<removeIDSQL>
        String sql="DELETE FROM dbo.attraction WHERE ";
        sql+="user_id";
        sql+=" = ?";
        //</removeIDSQL>    PreparedStatement ps = null;
        try {      if (con.isClosed()) {
            throw new IllegalStateException("error.unexpected");
          }      ps = con.prepareStatement(sql);
          
          //<setremovekeyIDdata>
          ps.setString(1,keyID);
              //</setremovekeyIDdata>
       
          if (ps.executeUpdate() != 1) {
            throw new SQLException (
              "error.removed.lyk");
          }    } catch (SQLException e) {
          e.printStackTrace();
          throw new RuntimeException("error.unexpected");
        } finally {
          try {
            if (ps != null)
              ps.close();
              
              ////////在这里加入-----------------------------------------------
               ps = con.prepareStatement("COMMIT");
               ps.execute();
               if (ps != null)
                     ps.close();
              
              
          } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException("error.unexpected");
          }
        }
      }
    ----------------------
    本应用程序的其它代码:lyk.java/lykDAO.java/lykForm.java/lykAction四个文件及20分见:
    http://expert.csdn.net/Expert/topic/2400/2400412.xml?temp=.2245447欢迎继续导论JSPStudio开发工具自动产生的Struts程序代码及开发方法,过点再一起给分!
    JSPStudio下载地址ftp://162.105.80.43/incoming/
      

  2.   

    上述问题的另外解决办法是在“ps = con.prepareStatement(sql);”前加上:
    “con.setAutoCommit(true);”
    或者在“ps.close();”后加上:
    “con.commit();”
      

  3.   

    虽然我下载了JSPStudio,但是一直没有用。我看问题也是出在没有提交上。(废话一句)