GONGJUNRUI123 2017-10-30 20:33 采纳率: 33.3%
浏览 3158
已采纳

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中设置自动提交事务就可以了

    评论
  • 刘鹏博. 2017-10-31 04:01
    关注

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

    评论
  • 关注

    insert .......;commit;

    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 MYSQL 订单的商品明细重复计算问题
  • ¥15 微信实时共享位置修改
  • ¥100 TG的session协议号转成直登号号后客户端登录几分钟后自动退出设备
  • ¥30 共模反馈回路的小信号增益
  • ¥15 arduino ssd1306函数与tone函数放歌代码不兼容问题
  • ¥70 0.96版本hbase的row_key里含有双引号,无法deleteall
  • ¥40 Ida Pro增加插件出现问题
  • ¥15 诊断性META分析合并效能的检验
  • ¥15 请问abb根据色块判断奇偶数并根据批次号放入仓储
  • ¥66 开发PC客户端一定也要开发上位机吗?