我Java中用SQL语句删除access数据库的记录,为什么用access打开时记录还在?
程序部分代码如下,请高手指点! Integer result = 0;
Connection pvt_dbConn = null;
Statement pvt_stmt = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (java.lang.ClassNotFoundException e) {
System.err.println(e.getMessage());
}
try {
if (pvt_dbConn == null) {
pvt_dbConn = DriverManager.getConnection("jdbc:odbc:test","","");         String str_sql = "DELETE FROM tb_node WHERE id = 1";
pvt_stmt = pvt_dbConn.createStatement();
result = pvt_stmt.executeUpdate(str_sql);
}
} catch (SQLException ex) {
// TODO Log will be needed, right now only sends command line debug.
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}

解决方案 »

  1.   

    已经解决了.
    要加上下面这句:
    pvt_dbConn.close();
    但为什么每次删除都要关闭连接才能删除,真是很奇怪!
      

  2.   

    因为关闭的同时,它会将没有提交的事务给提交了,你可以用commit()就不需要关闭了
      

  3.   

    我试过用commit()的.
    加了pvt_dbConn.commit();也不起作用.
    还是要close();之后才会提交.
    真的很奇怪.
    之前使用mysql就不会这样.
      

  4.   

    哈哈,知道怎么可以不用close()也可以提交了.
    要先把Connection设成不是自动提交:
    pvt_dbConn.setAutoCommit(false);
    然后再用
    pvt_dbConn.commit();
    这样就可以了.
      

  5.   

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;import com.cqcst.db.JdbcConn;
    import com.cqcst.vo.Student;public class ManagerJdbc { /**
     * 封装所有数据库的CRUD操作
     */
    private Connection conn = JdbcConn.getConn();
    //1.创建用户,注册用户
    public boolean createUser(Student stu){
    boolean flag = false;
    String sql = "insert into userinf(name,pass) values('"+stu.getName()+"','"+stu.getPass()+"')";
    System.out.println(sql);
    try {
    Statement st = conn.createStatement();
    int i = st.executeUpdate(sql);
    if(i>0)
    flag = true;
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return flag;
    }
    //2.根据给出的条件,查询用户信息
    public List<Student> selectAll(){
    Student stu = null;
    List<Student> list = new ArrayList<Student>();
    String sql = "select * from userinf";
    try {
    Statement st = conn.createStatement();
    ResultSet rs = st.executeQuery(sql);
    if(rs.next()){
    // System.out.println("id:"+rs.getInt("id")+"\tname:"+rs.getString("name")+"\tpass:"+rs.getString("pass"));
    stu = new Student();
    stu.setId(rs.getInt("id"));
    stu.setName(rs.getString("name"));
    stu.setPass(rs.getString("pass"));
    list.add(stu);
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return list;
    }
    //3.根据给出的条件,更新用户信息
    public boolean updateUserById(Student stu){
    boolean flag = false;
    String sql = "update userinf set name = ?, pass = ? where id = ?";
    try {
    PreparedStatement pst = conn.prepareStatement(sql);
    pst.setString(1, stu.getName());
    pst.setString(2,stu.getPass());
    pst.setInt(3, stu.getId());

    int id = pst.executeUpdate();
    if(id>0){
    flag = true;
    }

    } catch (SQLException e) {
    e.printStackTrace();
    }
    return flag;
    }
    //4.给出条件,删除用户
    public boolean deleteUserByid(Student stu){
    boolean flag = false;
    String sql="DELETE FROM userinf WHERE id = ?";
    try {
    PreparedStatement pst = conn.prepareStatement(sql);
    pst.setInt(1, stu.getId());
    int id = pst.executeUpdate();
    if (id > 0) {
    flag = true;
    }
    } catch (Exception e) {
    // TODO: handle exception
    }
    return flag;
    }
    }