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”这条数据:
![删除数据](https://img-ask.csdn.net/upload/201710/31/1509395121_210391.jpg)

我再在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();
        }
    }

结果显示这条数据还是存在的 请问是什么原因?

9个回答

数据库为了保证数据的安全,会有一个事务的概念
比如过一个账户减钱,对应一个账户加钱(类比我们的转账)
如果在减钱成功正在给另一个账户加钱的时候,数据库异常,则数据就会发生错误

为了避免这种情况,我们可以设置这个转账的过程为一个事务
在事务没有提交的时候,数据库里面的数据还是不会发生变化的
所有只要在转账完成之后再提交事务就可以避免数据错误了

更多内容可以看看:http://www.cnblogs.com/fjdingsd/p/5273008.html

zjq_1314520
片刻清夏 回复GONGJUNRUI123: JDBC默认是自动提交事务的,可以使用Connection 的setAutoCommit(false) 方法来取消自动提交事务,从而自己受冻控制事务!
大约 2 年之前 回复
GONGJUNRUI123
GONGJUNRUI123 还有一个问题, 我用JDBC进行插入或删除数据,语句中是否也需要commit?
大约 2 年之前 回复

数据库没有提交事务吧

完成删除的执行操作时,还要提交程序所做的事务,结束了才有效的

你数据库的删除操作没有提交吧,所以在Java中查询的时候那条数据还是存在的,一楼举的例子很恰当

are you commit

oracle的事务是不会自动提交的,因此在oracle中操作数据是要commit的。

在pl/sql中设置自动提交事务就可以了

insert .......;commit;

可以通过查询主键进行删除

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!