java连接mysql数据库如何实现单条插入和批量插入
创始人
2024-12-22 10:41:33
0次

1、连接数据库

package com.njupt.ymh; import java.sql.DriverManager;import java.sql.SQLException;import com.mysql.jdbc.Connection; public class Connect_MySQL {  private static final String URL="jdbc:mysql://127.0.0.1:3306/news"; // 一般默认3306,这里设置成6666 (33060) MYSQL8 WMPNetworkSvc private static final String USER="root"; private static final String PASSWORD="12345"; private static Connection connection=null;  static{ //1、加载驱动程序(反射的方法) try {  Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) {  e.printStackTrace(); } //2、连接数据库 try { connection=(Connection) DriverManager.   getConnection(URL, USER,PASSWORD);//地址,用户名,密码 } catch (SQLException e) {  e.printStackTrace(); } } public static Connection getConnection(){ return connection; } }

2、单条插入

package com.njupt.ymh;/** * 单条插入数据 */ import java.sql.SQLException;import java.util.List; import com.mysql.jdbc.Connection; public class OperationPaper {  private static Connection connection=Connect_MySQL.getConnection();  public void addNewsPaper(NewsPaper newsPaper){//增 // connection = Connect_MySQL.getConnection(); String sql="insert into papertest (id, date, title, lead_pargraph, full_text) values(?, ?, ?, ?, ?)";   java.sql.PreparedStatement ptmt = null;  try {  ptmt = connection.prepareStatement(sql);  } catch (SQLException e1) {  e1.printStackTrace();  }    try {  ptmt.setLong(1, newsPaper.getID());  ptmt.setString(2, newsPaper.getDate());  ptmt.setString(3, newsPaper.getTitle());  ptmt.setString(4, newsPaper.getLead());  ptmt.setString(5, newsPaper.getfull());  ptmt.execute();//执行给定的SQL语句,该语句可能返回多个结果    } catch (SQLException e) {  e.printStackTrace();  } } public static void main(String[] args) { OperationPaper operationPaper = new OperationPaper(); List listFile = SearchFile.getAllFile("E:\\huadai\\1996\7\\21", false); // 文件列表  for (String string : listFile) {    NewsPaper newsPaper = new NewsPaper(string);  if (newsPaper.isUseful())   operationPaper.addNewsPaper(newsPaper); // 插入数据库 } } }

3、批量插入

package com.njupt.ymh; import java.sql.SQLException;import java.util.ArrayList;import java.util.List; import com.mysql.jdbc.Connection; public class OperaOnNewsPaper implements Cloneable{ private static Connection connection=Connect_MySQL.getConnection();   /** * 支持批量插入数据 * @param newsPaper */  public void addNewsPaper(ArrayList listNewsPaper){//增 String sql="insert into papertest (id, date, title, lead_pargraph, full_text) values(?, ?, ?, ?, ?)"; java.sql.PreparedStatement ptmt = null;  try {  connection.setAutoCommit(false);// 关闭事务  ptmt = connection.prepareStatement(sql);  } catch (SQLException e2) {  e2.printStackTrace(); }   for (NewsPaper paperaper : listNewsPaper) {    try {  ptmt.setLong(1, paperaper.getID());  ptmt.setString(2, paperaper.getDate());  ptmt.setString(3, paperaper.getTitle());  ptmt.setString(4, paperaper.getLead());  ptmt.setString(5, paperaper.getfull());  ptmt.addBatch();   }   catch (SQLException e) {  e.printStackTrace();  } } try {  ptmt.executeBatch();//执行给定的SQL语句,该语句可能返回多个结果  connection.commit(); } catch (SQLException e) {  e.printStackTrace(); } }   public static void main(String[] args) { OperaOnNewsPaper operation = new OperaOnNewsPaper(); List listFile = SearchFile.getAllFile("E:\\huadai\\2007", false); // 文件列表 ArrayList listPaper = new ArrayList<>(); int count = 0; int sizenum = 1000; for (String string : listFile) {  NewsPaper newsPaper = new NewsPaper(string);    if (newsPaper.isUseful()) {  count++;  listPaper.add(newsPaper);  // 新闻列表  if (count % sizenum == 0) {   //System.out.println("ok");   System.out.println("  " + count);   operation.addNewsPaper(listPaper); //插入数据库      System.out.println(count);   listPaper.clear();  }  }  } if (count %sizenum != 0) {  operation.addNewsPaper(listPaper);  System.out.println("zui hou "); }  }}

通过实际测试,大概十万级数据批量插入要不单条插入节省10分钟左右时间。因为每次单条插入就要和数据库建立一次连接,进行一次日志更新。但是,如果批量插入过程中,批量的数据值有一条不符合格式就将导致本次批量插入整体失败,因此需要对失败情况进行处理,或者对批量插入的数据进行预处理,保证批量插入能够成功。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...