JDBC 连接java和Oracle 数据库 删除之后数据仍然存在
问题描述:
各位,我在Oracle数据库里面删除一条数据,之后在Java里面查询这条数据,结果显示还是存在这条数据,这是为什么?
这是jdbc连接的代码:
public class DbTools {
Connection connection;
public Connection getConn() {
try{
//load the driver
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String userName = "system";
String password = "123";
//get the connection object
connection = DriverManager.getConnection(url, userName, password);
}catch (ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException e){
e.printStackTrace();
}
return connection;
}
}
表名:useinfo
1.usename
2.password
我在数据库里面先删除“22222”这条数据:

我再在java里面查询这条数据:
public static void searchJDBC(String name){
String sql = String.format("select * from useinfo where username='%s'", name);
DbTools dbTools = new DbTools();
Connection connection = dbTools.getConn();
try{
//create the statement object
Statement statement=connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()) {
System.out.println(resultSet.getString("username")+ " "+ resultSet.getString("password"));
}
}catch (SQLException e){
e.printStackTrace();
}
}
结果显示这条数据还是存在的 请问是什么原因?
答
数据库为了保证数据的安全,会有一个事务的概念
比如过一个账户减钱,对应一个账户加钱(类比我们的转账)
如果在减钱成功正在给另一个账户加钱的时候,数据库异常,则数据就会发生错误
为了避免这种情况,我们可以设置这个转账的过程为一个事务
在事务没有提交的时候,数据库里面的数据还是不会发生变化的
所有只要在转账完成之后再提交事务就可以避免数据错误了
答
数据库没有提交事务吧
答
完成删除的执行操作时,还要提交程序所做的事务,结束了才有效的
答
你数据库的删除操作没有提交吧,所以在Java中查询的时候那条数据还是存在的,一楼举的例子很恰当
答
are you commit
答
oracle的事务是不会自动提交的,因此在oracle中操作数据是要commit的。
答
在pl/sql中设置自动提交事务就可以了
答
可以通过查询主键进行删除
答
insert .......;commit;