JDBC-07- 批量执行SQL语句

批量插入

批量执行SQL语句

当需要成批执行插入或者更新记录时,可以采用java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下比单独提交处理更有效率

JDBC的批量处理语句包括下面三个方法:
  • addBatch(String): 添加需要批量处理的SQL语句或是参数
  • executeBath(): 执行批量处理语句
  • clearBath(); 清空缓存的数据
通常我们会遇到两种批量执行SQL语句的情况
  • 多条SQL语句的批处理
  • 一条SQL语句的批传参

高效的批量插入

层次一:使用Statement实现

 * Connection conn = JDBCUtils.getConnection();
 * Statement st = conn.createStatement();
 * for(int i = 1;i <= 20000;i++){
 * 		String sql = "insert into goods(name)values('name_" + i + "')";
 * 		st.execute(sql);
 * }

层次二:使用PreparedStatement

long start = System.currentTimeMillis();
		
Connection conn = JDBCUtils.getConnection();
		
String sql = "insert into goods(name)values(?)";
PreparedStatement ps = conn.prepareStatement(sql);
for(int i = 1;i <= 20000;i++){
	ps.setString(1, "name_" + i);
	ps.executeUpdate();
}
		
long end = System.currentTimeMillis();
System.out.println("花费的时间为:" + (end - start));//82340
		
		
JDBCUtils.closeResource(conn, ps);

层次三: 使用addBatch()、executeBatch()、clearBatch()

1.addBatch()、executeBatch()、clearBatch()
2.mysql服务器默认是关闭批处理的,我们需要通过一个参数,让mysql开启批处理的支持。?rewriteBatchedStatements=true 写在配置文件的url后面
3.使用更新的mysql 驱动:mysql-connector-java-5.1.37-bin.jar

@Test
public void testInsert1() throws Exception{
	long start = System.currentTimeMillis();
		
	Connection conn = JDBCUtils.getConnection();
		
	String sql = "insert into goods(name)values(?)";
	PreparedStatement ps = conn.prepareStatement(sql);
		
	for(int i = 1;i <= 1000000;i++){
		ps.setString(1, "name_" + i);
			
		//1.“攒”sql
		ps.addBatch();
		if(i % 500 == 0){
			//2.执行
			ps.executeBatch();
			//3.清空
			ps.clearBatch();
		}
	}
		
	long end = System.currentTimeMillis();
	System.out.println("花费的时间为:" + (end - start));//20000条:625                                                                         //1000000条:14733  
		
	JDBCUtils.closeResource(conn, ps);
}

层次四:设置连接不允许自动提交数据

设置不允许自动提交数据conn.setAutoCommit(false);
提交数据 conn.commit();

 @Test
	public void testInsert3() {
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			
			long start = System.currentTimeMillis();
			
			conn = JDBCUtils.getConnection();
			
			//设置不允许自动提交数据
			conn.setAutoCommit(false);
			
			String sql = "insert into goods(name)values(?)";
			ps = conn.prepareStatement(sql);
			for(int i = 1;i <= 1000000;i++){
				ps.setObject(1, "name_" + i);
				
				//1."攒"sql
				ps.addBatch();
				
				if(i % 500 == 0){
					//2.执行batch
					ps.executeBatch();
					
					//3.清空batch
					ps.clearBatch();
				}				
			}	
			//提交数据
			conn.commit();
			
			long end = System.currentTimeMillis();
			
			System.out.println("花费的时间为:" + (end - start));      //20000:83065 -- 565
		} catch (Exception e) {								//1000000:16086 -- 5114
			e.printStackTrace();
		}finally{
			JDBCUtils.closeResource(conn, ps);
			
		}
		
	}

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: sqlite-jdbc-3.25.1.jar 是一个用于连接和操作 SQLite 数据库Java 驱动程序。它提供了在 Java 程序中对 SQLite 数据库进行读取和写入的功能。 SQLite 是一个轻量级的嵌入式数据库引擎,被广泛应用于移动设备和嵌入式系统中。而 sqlite-jdbc-3.25.1.jar 则是 SQLite 数据库Java 接口,它允许开发者使用 Java 语言来访问和操作 SQLite 数据库。该驱动程序允许在 Java 应用程序中使用 SQL 语句对 SQLite 数据库进行增、删、改、查等操作。 使用 sqlite-jdbc-3.25.1.jar 进行 SQLite 数据库操作非常简单。开发者只需在 Java 项目中引入该驱动程序的 Jar 文件,并使用 Java 代码进行连接和操作数据库即可。通过创建 Connection 对象,开发者可以连接到 SQLite 数据库。然后,可以使用该对象创建 Statement 对象,并通过执行 SQL 查询和更新语句来操作数据库中的数据。最后,需确保在使用完毕后,关闭相关的连接和资源。 除了提供基本的数据库连接和操作功能外,sqlite-jdbc-3.25.1.jar 还支持事务管理、预编译 SQL 语句、批量处理等高级功能,使得 SQLite 数据库Java 程序中的使用更加灵活和高效。 总而言之,sqlite-jdbc-3.25.1.jar 是一个用于连接和操作 SQLite 数据库Java 驱动程序。它方便了开发者在 Java 程序中使用 SQL 语句对 SQLite 数据库进行操作,为开发者提供了一个简单、高效的访问 SQLite 数据库的接口。 ### 回答2: sqlite-jdbc-3.25.1.jar是一个Java编程语言的SQLite数据库驱动程序。SQLite是一种轻量级的关系型数据库管理系统,具有快速、可靠和易于集成的特点。它是一个嵌入式数据库,不需要独立的服务器进程,可以直接在应用程序中使用。 sqlite-jdbc-3.25.1.jar是SQLite官方提供的Java接口实现。它提供了对SQLite数据库的连接、查询、插入、更新和删除等操作的支持。通过引入该jar包,我们可以在Java应用程序中使用SQLite数据库,进行数据的持久化存储和访问。 使用sqlite-jdbc-3.25.1.jar可以简化与SQLite数据库的交互过程。我们只需在Java程序中引入该库,并配置相应的连接参数,即可创建和管理SQLite数据库连接对象。然后,我们可以使用SQL语句执行数据库操作,例如查询表中的数据、插入新的记录、更新已有记录等。 sqlite-jdbc-3.25.1.jar还提供了一些其他的功能和特性,例如批量操作、事务处理、预编译语句、连接池管理等,可以进一步优化数据库操作的性能和效率。 总之,sqlite-jdbc-3.25.1.jar是一个能够在Java应用程序中与SQLite数据库进行交互的驱动程序。通过使用它,我们可以更方便地使用SQLite作为数据存储和管理的解决方案,实现数据持久化和访问的需求。 ### 回答3: sqlite-jdbc-3.25.1.jar 是SQLite数据库Java驱动程序。它是用于在Java应用程序中与SQLite数据库进行交互的关键库文件。SQLite是一个轻量级的嵌入式关系型数据库,适用于移动设备和小型应用。而sqlite-jdbc-3.25.1.jar允许Java开发人员通过提供一个简单的API来连接和操作SQLite数据库sqlite-jdbc-3.25.1.jar提供了一系列的类和方法,使开发人员可以轻松地创建、查询、更新和删除数据库中的数据。它支持执行SQL语句、预编译语句、事务管理等数据库操作。从连接数据库执行SQL语句到关闭数据库连接,sqlite-jdbc-3.25.1.jar提供了一套完整的功能来简化与SQLite数据库的交互。 使用sqlite-jdbc-3.25.1.jar可以带来很多好处。首先,它提供了一个简单而易于使用的API,使得在Java应用程序中使用SQLite数据库变得更加方便。其次,它具有良好的性能和可靠性,能够处理大量数据和高并发访问。另外,sqlite-jdbc-3.25.1.jar是开源的,意味着开发人员可以根据自己的需求进行定制和扩展。最重要的是,由于SQLite是一个嵌入式数据库,所以在使用sqlite-jdbc-3.25.1.jar时不需要额外安装和配置数据库服务器,这使得应用程序的部署更加简单和便捷。 总而言之,sqlite-jdbc-3.25.1.jar是一个重要的Java库文件,它使得在Java应用程序中使用SQLite数据库变得更加便捷和高效。它具有简单易用的API、良好的性能和可靠性,适用于各种规模的应用程序。无论是在移动设备还是小型应用中,sqlite-jdbc-3.25.1.jar都是首选的数据库驱动程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值