数据库中无法进行update和insert
是怎么回事?
我的java数据库连接类(connect.java):import java.sql.*;public class connect {    private Connection con = null;
   static String   sDBDriver   =   "com.microsoft.jdbc.sqlserver.SQLServerDriver";
   static String sDbURL =
        "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=puds";
    static String sDbLogin ="sa";
    static String sDbPassword ="";    public connect() {
    }    public static Connection getConnection() {
         Connection conn = null;
         try {
             Class.forName(sDBDriver);
             conn = DriverManager.getConnection(sDbURL, sDbLogin, sDbPassword);
             conn.setAutoCommit(false); 
             return conn;
         } catch (Exception e) {
             e.printStackTrace();
         }
         return null;
     }
}
我把sql语句写在一个静态类里(sql.java)public class sql {
    public sql() {
    }
    public static final String sql_login = "insert into jobmem(username,email,pwd,truename,pdate,type) values(?,?,?,?,getDate(),?)";
    }
   
我在myoper.java中调用:    private Connection con = null;
    private PreparedStatement ps = null;
    private ResultSet rs = null;
   public boolean getlogin(String username, String truename, String pwd,
                            String type) {
        try {
            connect co = new connect();
            con = co.getConnection();
            ps = con.prepareStatement(sql.sql_login);
            ps.setString(1, username); 
            ps.setString(2, username); 
            ps.setString(3, pwd);
            ps.setString(4, truename);
            ps.setString(5, type);
            int q = ps.executeUpdate(); 
            if (q > 0) {
               System.out.println("q="+q);
                return true;
            }
        } catch (Exception ex) {
            System.out.println("用户注册失败:" + ex.getMessage().toString());
        } finally {
            try {
                con.close();
            } catch (SQLException ex1) {
            }
        }
        return false;
    }
我将q输出:1
但是我到数据库中去查看就是不更新数据库,
但是手动填写数据,却能从数据库中读出来,请问高手们,这是怎么回事?

解决方案 »

  1.   

    注意你的数据库连接类里的这一句
    conn.setAutoCommit(false); 
    这是将JDBC事务设置为不自动提交
    也就是说每执行完一个SQL命令后你必须使用conn.commit();进行手动提交才能真正的插入数据库
    当执行失败的时候conn.rollback();进行回滚事务所以你的数据库无法更新,是因为你没有提交事务
    修改方法:
    1.conn.setAutoCommit(false); 把这一行删除,让JDBC自动处理事务
    2.int q = ps.executeUpdate(); 
    在这一行后面加上conn.commit();手动提交事务
    同时在这里加上conn.rollback();回滚事务
     catch (Exception ex) {
                System.out.println("用户注册失败:" + ex.getMessage().toString());
                conn.rollback();
     }
      

  2.   

    遇到贵人了,
    嘿嘿,帮我解决下这个问题好吗??
     sql   server+tomcat5.5连接池配置问题谢谢您了,大好人!!