java连接mysql数据库实现单条插入和批量插入

本文实例为大家分享了java连接mysql数据库实现单条和批量插入的具体代码,供大家参考,具体内容如下

本文插入数据库的数据来源:java + dom4j.jar提取xml文档内容

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<String> listFile = SearchFile.getAllFile("E:\\huadai\\1996\\07\\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<NewsPaper> 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<String> listFile = SearchFile.getAllFile("E:\\huadai\\2007", false); // 文件列表
 ArrayList<NewsPaper> 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分钟左右时间。因为每次单条插入就要和数据库建立一次连接,进行一次日志更新。但是,如果批量插入过程中,批量的数据值有一条不符合格式就将导致本次批量插入整体失败,因此需要对失败情况进行处理,或者对批量插入的数据进行预处理,保证批量插入能够成功。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java向mysql插入数据乱码问题的解决方法

    遇到java向mysql插入数据乱码问题,如何解决? MySQL默认编码是latin1 mysql> show variables like 'character%'; +--------------------------+--------------------------+ | Variable_name | Value | +--------------------------+--------------------------+ | character_set_client | la

  • java实现插入mysql二进制文件,blob类型,遇到问题及解决办法

    首先是数据库建立要准备的: 我们要把放置二进制字段设置为Blob类型,根据文件的大小选择合适的Blob类型,一下是各个Blob类型所能容纳二进制文件的大小 MySQL的四种BLOB类型 类型 大小(单位:字节) TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G 一下是具体操作代码: 复制代码 代码如下: /** * * 把二进制文件(该二进制文件可以是本地硬盘路径,也可以是一个网络路径)存入数据库 * create date

  • java操作mysql入门代码实例(含插入、更新和查询)

    复制代码 代码如下: import java.sql.*; public class mysql {    public static String url = "jdbc:mysql://localhost:3306/test";//characterEncoding=GBK    public static String username = "root";    public static String password = "root";

  • java中JDBC实现往MySQL插入百万级数据的实例代码

    想往某个表中插入几百万条数据做下测试,原先的想法,直接写个循环10W次随便插入点数据试试吧,好吧,我真的很天真.... DROP PROCEDURE IF EXISTS proc_initData;--如果存在此存储过程则删掉 DELIMITER $ CREATE PROCEDURE proc_initData() BEGIN DECLARE i INT DEFAULT 1; WHILE i<=100000 DO INSERT INTO text VALUES(i,CONCAT('姓名',i),

  • Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: 通过使用addBatch()和executeBatch()这一对方法可以实现批量处理数据. 不过值得注意的是,首先需要在数据库链接中设置手动提交,connection.setAutoCommit(false),然后在执行Statement之后执行connection.commit(). import java.io.Bu

  • Java获取最后插入MySQL记录的自增ID值的3种方法

    方法一: 复制代码 代码如下: String sql = "INSERT INTO users (username,password,email) VALUES (?,?,?);";PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//传入参数:Statement.RETURN_GENERATED_KEYSpstmt.setSt

  • 利用Java的MyBatis框架获取MySQL中插入记录时的自增主键

    第一步: 在Mybatis Mapper文件中添加属性"useGeneratedKeys"和"keyProperty",其中keyProperty是Java对象的属性名! <insert id="insert" parameterType="Spares" useGeneratedKeys="true" keyProperty="id"> insert into spares

  • java 下执行mysql 批量插入的几种方法及用时

    方法1: Java code 复制代码 代码如下: conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);        pstmt = conn                .prepareStatement("insert into loadtest (id, data) values (?, ?)");        for (int i = 1; i <= COUNT; i++) {    

  • java连接mysql数据库实现单条插入和批量插入

    本文实例为大家分享了java连接mysql数据库实现单条和批量插入的具体代码,供大家参考,具体内容如下 本文插入数据库的数据来源:java + dom4j.jar提取xml文档内容 1.连接数据库 package com.njupt.ymh; import java.sql.DriverManager; import java.sql.SQLException; import com.mysql.jdbc.Connection; public class Connect_MySQL { priv

  • java连接MySQL数据库的代码

    本文实例为大家分享了java连接MySQL数据库的具体代码,供大家参考,具体内容如下 package connect; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class Connect { //驱动程序位置 public static final String DBDRIVER="com.mysql.jdbc.Driver"; //连接地址

  • Java连接MYSQL数据库的实现步骤

    此文章主要向大家描述的是Java连接MYSQL 数据库(以MySQL为例)的实际操作步骤,我们是以相关实例的方式来引出Java连接MYSQL 数据库的实际操作流程,以下就是文章的主要内容描述. 当然,首先要安装有JDK(一般是JDK1.5.X).然后安装MySQL,这些都比较简单,具体过程就不说了.配置好这两个环境后,下载JDBC驱动mysql-connector-java-5.0.5.zip(这个是最新版的).然后将其解压缩到任一目录.我是解压到D盘,然后将其目录下的mysql-connect

  • Java连接MYSQL数据库的详细步骤

    本文主要以MySQL为例讲下Java如何连接到数据库的,具体内容如下 当然,首先要安装有JDK(一般是JDK1.5.X).然后安装MySQL,这些都比较简单,具体过程就不说了.配置好这两个环境后,下载JDBC驱动mysql-connector-java-5.0.5.zip(这个是最新版的).然后将其解压缩到任一目录.我是解压到D盘,然后将其目录下的mysql-connector-java-5.0.5-bin.jar加到classpath里,具体如下:"我的电脑"-> "

  • Java连接MySQL数据库增删改查的通用方法(推荐)

    运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类下面写好多方法,要是多个数据库,就要写多个类多个方法,导致代码编写太过于繁琐,所以为了改变这样的繁琐,我将连接数据库的方法进行了一系列的封装,使用户传入一个对象值Object就可以得到想要的. 我在之前写过一篇普通的Java连接MySQL数据库,大家可以看看,以便对比参考之后就知道差距了 数据库--MySQL-->Java篇 接下来我给大家讲讲如何将这个不可复用,又多重复的连接代码,封装起来,非常

  • Java连接Mysql数据库详细代码实例

    这篇文章主要介绍了Java连接Mysql数据库详细代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 隔了一段时间没连过数据库,代码都忘记了,网上看了下挺乱的,还是自己记录下好.这里的代码主要是连接数据库和显示数据,没有具体的数据库操作. 首先第一步当然是导入mysql的jar包,在java文件中创一个新的文件夹,我这里命名为lib,然后把jar包复制进去 然后右键jar包,选择build path将包添加进库中 之后就是代码实现了 pac

  • Java连接MySQL数据库实例

    首先说明,由于是8版本的数据库,所以配置类的写法上与5版本的有所区别,需要注意,同时用idea或eclipse时需要导入jar包,jar包的下载链接: https://dev.mysql.com/get/archives/mysql-connector-java-8.0/mysql-connector-java-8.0.28.zip 如果想要下载8版本不同的jar包只需要修改8.0.28为指定版本即可. idea导入jar包的方法如下: 然后是代码部分,首先先建表: CREATE TABLE `

  • java连接mysql数据库及测试是否连接成功的方法

    本文实例讲述了java连接mysql数据库及测试是否连接成功的方法.分享给大家供大家参考,具体如下: package com.test.tool; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement

  • java连接mysql数据库 java连接sql server数据库

    在java的应用中,我们经常会对数据库进行必要的操作,下来我们就了解一下如何用java连接mysql数据库 以及java连接sql server数据库 一.mysql import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestOne {

  • Java连接mysql数据库并进行内容查询的方法

    最近用框架做了几个项目,感觉当初底层的东西有点忘了,写一个JDBC的简单的连接代码来熟悉回顾一下,也希望对刚接触的新手能有所帮助.这也是我的第一篇随笔,废话不多说,直接上代码: public Connection getCon() { //数据库连接名称 String username="root"; //数据库连接密码 String password=""; String driver="com.mysql.jdbc.Driver"; //其中

随机推荐