我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());
}
程序部分代码如下,请高手指点! 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());
}
解决方案 »
- jtds resultset 只获取出查询字段的部分字符
- 向java高手求助
- 各位老鸟前辈请指点下。如何利用jbuilber把所有代码生成jar可执行程序?
- 怎么将十六进制字符串:0020000000c00012 转换成:0x00 0x20 0x00 0x00 0x00 0xc0 0x00 0x12 .
- 两道scjp题的比较,谁能说出有力的证据说明为什么执行不一样?
- 用Properties 读取文件怎么读取中文阿????
- “string对象是不可改变的”,这句话该怎么理解?
- 想让JLabel显示的字是从上到下的。该怎么办?
- 拿分问题!!!!快来看!!!!
- 跪求大神好心人给个javacv-0.7cppjars.zip包
- 类名 对象名 = new 类名(); ???
- 急,大家帮帮忙Syntax error,insert "AssignmentOperator Expression" to complete Expression
要加上下面这句:
pvt_dbConn.close();
但为什么每次删除都要关闭连接才能删除,真是很奇怪!
加了pvt_dbConn.commit();也不起作用.
还是要close();之后才会提交.
真的很奇怪.
之前使用mysql就不会这样.
要先把Connection设成不是自动提交:
pvt_dbConn.setAutoCommit(false);
然后再用
pvt_dbConn.commit();
这样就可以了.
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;
}
}