a97263047 2012-09-20 11:46
浏览 259
已采纳

JDBC插入大量数据问题

我用的mysql

public class Main {
public static void main(String[] args) {
int count = 0;
PreparedStatement pstmt =null;
Connection conn = JDBCUtil.getConnection();
String sql = "insert into mobile_place(number,place) values(?,?)";
try {
InputStreamReader is = new InputStreamReader(new FileInputStream(new File("D:/CC.txt")),"utf-8");
BufferedReader br = new BufferedReader(is);
while(br.readLine() != null){
conn.setAutoCommit(false);
count++;
String str = br.readLine().toString().trim();
String s1 = str.substring(0, str.indexOf(","));
String s2 = str.substring(str.indexOf(",")+1,str.length());
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, s1);
pstmt.setString(2, s2);
pstmt.addBatch();
if(count%500 == 0){
pstmt.executeBatch();
conn.commit();
}
System.out.println("已插入"+count+"条数据");
}
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

1899952 ,新疆-克拉玛依

1899954 ,新疆-昌吉

1899956 ,新疆-昌吉

1899958 ,新疆-伊犁

1899960 ,新疆-库尔勒

1899962 ,新疆-库尔勒

1899964 ,新疆-喀什

1899966 ,新疆-阿克苏

1899968 ,新疆-哈密

1899970 ,新疆-奎屯

1899972 ,新疆-奎屯

1899974 ,新疆-塔城

1899976 ,新疆-博乐
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
有很多这样格式的数据,读取出来存入数据库,但是数据库中根本就没有插入这么多数据,只有很少的一部分插进去了,这是为什么?

  • 写回答

2条回答 默认 最新

  • jinnianshilongnian 2012-09-20 12:08
    关注

    逻辑写的不对

    改成

    pstmt = conn.prepareStatement(sql);
    while(br.readLine() != null){
    conn.setAutoCommit(false);
    count++;
    String str = br.readLine().toString().trim();
    String s1 = str.substring(0, str.indexOf(","));
    String s2 = str.substring(str.indexOf(",")+1,str.length());
    pstmt.setString(1, s1);
    pstmt.setString(2, s2);
    pstmt.addBatch();
    if(count%500 == 0){
    pstmt.executeBatch();
    conn.commit();
    }
    System.out.println("已插入"+count+"条数据");
    }

    if(count%500!=0) {
    pstmt.executeBatch();
    conn.commit();
    }

    你之前的逻辑会每次循环创建一个pstmt 这样只有第500个可以插入

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程