GONGJUNRUI123
2017-10-30 20:33
采纳率: 50%
浏览 3.0k

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条回答 默认 最新

  • 十木禾 2017-10-31 00:53
    已采纳

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

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

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

    点赞 打赏 评论
  • GMaya 2017-10-31 00:33

    数据库没有提交事务吧

    点赞 打赏 评论
  • hyp520520 2017-10-31 01:24

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

    点赞 打赏 评论
  • penguinDada 2017-10-31 01:24

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

    点赞 打赏 评论
  • 黄河默默 2017-10-31 01:33

    are you commit

    点赞 打赏 评论
  • 如影随形小浩儿 2017-10-31 02:13

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

    点赞 打赏 评论
  • helloyourkey 2017-10-31 02:27

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

    点赞 打赏 评论
  • KK·Liu先生 2017-10-31 04:01

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

    点赞 打赏 评论
  • insert .......;commit;

    点赞 打赏 评论

相关推荐 更多相似问题