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

求解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 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型