longlong3207 2018-02-01 05:27 采纳率: 0%
浏览 1991
已结题

jdbc preparestatement 批量提交问题

 public static void addRecord(String tableName,String title,List<Object> contents){
        long count = 0;
        Integer time = 0;
        Connection conn = getConn();
        try {
            conn.setAutoCommit(false);
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        PreparedStatement ps = null;
        StringBuffer sql = new StringBuffer();
        StringBuffer sb = new StringBuffer();
        try {
        for (int i = 0; i < contents.size(); i++) {
            sql.setLength(0);
            sb.setLength(0);
            sb.append(((List)contents.get(i)).get(0).toString());
        //sql.append("insert into "+tableName+" ("+title+") values ( "+sb.toString().replaceAll("\"","'")+" )");
        sql.append("insert into "+tableName+" ("+title+") values ( "+sb.toString()+" )");
            ps = conn.prepareStatement(sql.toString());
            ps.addBatch();
            count++;
            if(time<=(count/10000)){
                if(count%10000==0){
                    time++;
                    ps.executeBatch();
                    conn.commit();
                    //conn.setAutoCommit(true);
                }
            }
            if((time==(contents.size()/10000))&&(count%10000)!=0&&count==contents.size()){
                System.out.println("提交数据");
                int[] executeBatch = ps.executeBatch();
                System.out.println(executeBatch.toString());
                conn.commit();
                //conn.setAutoCommit(true);
            }

        }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            Close(null, ps, null);
        }

数据不能全部提交而且只有一条不是最后的记录,是中间的记录,为什么??

  • 写回答

6条回答 默认 最新

  • 沉默___ 2018-02-01 05:49
    关注

    commit不是应该在for循环外面吗?

    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程