纯种直男 2019-07-24 14:46 采纳率: 20%
浏览 1562
已结题

求解JDBC使用批处理executeBatch()之后commit(),数据库没有变化。

Java的JDBC使用批处理executeBatch()之后commit(),数据库没有变化。

代码

public static boolean newProblem_state(List<User_t> auditorlist, Problems_t problems)throws ClassNotFoundException, SQLException {
        KrakenRecord.debug("正在建立关联"+auditorlist.size());
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
        conn.setAutoCommit(false); // 设置手动提交
        String sql = "insert into problemstate_ta (problemstate_problem_id,problemstate_auditor_id,problemstate_state) values("
                + problems.getProblems_id() + ",?,0)";
        PreparedStatement ps = conn.prepareStatement(sql);
        for (User_t user_t : auditorlist) {
            ps.setInt(1, user_t.getUser_id());
            ps.addBatch();// 添加到批次
        }
        int[] i = ps.executeBatch();// 提交批处理
        conn.commit();// 执行
        for (int j : i) {
            System.out.println(j);
        }
        // 关闭资源
        ps.close();
        conn.close();
        return true;
}

以上代码运行后,显示:
正在建立关联4
1
1
1
1
auditorlist的size是4正确,打印的四个1应该是executeBatch()正确执行了,但是数据库没有变化,求解

补充:昨晚发现是插入的数据库没反应,也就是problemstate_ta 这个表,无法插入数据,命令没有写错,在Navicat中窗口模式手动插入数据,数据的自动增长id显示+1,插入数据也没有报错,但是刷新表,数据没了,求解

  • 写回答

2条回答

  • 毕小宝 博客专家认证 2019-07-24 14:51
    关注

    可能是数据库信息没有傻笑,可以试试数据库关闭下再重新打开,或者数据库刷新一下。

    评论

报告相同问题?

悬赏问题

  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'