java实现sql语句批处理

Statement实现批处理:

优点:能够处理多种不同结构的sql语句

缺点:不能预处理,执行效率较差。对于参数不同的同一条sql语句需要多次调用addBatch()

package com.itheima.batch;

import java.sql.Connection;
import java.sql.Statement;

import org.junit.Test;

import com.itheima.util.DBUtil;

public class StatementBatch {

	/*	mysql数据库:
	 	create database batch;
	 	use batch;
	 	create table mybatch(
	 		id int primary key auto_increment,
	 		name varchar(50)
	 	);
	 	insert into mybatch values (null, '1');
	 	insert into mybatch values (null, '2');
	 	insert into mybatch values (null, '3');
	 	insert into mybatch values (null, '4');
	 */
	@Test
	public void statementBatch() {
		Connection conn = null;
		Statement stat = null;
		try{
			conn = DBUtil.getConn();
			stat = conn.createStatement();
			stat.addBatch("create database batch");
			stat.addBatch("use batch");
			stat.addBatch("create table mybatch( id int primary key auto_increment, name varchar(50) )");
			stat.addBatch("insert into mybatch values (null, '1')");
			stat.addBatch("insert into mybatch values (null, '2')");
			stat.addBatch("insert into mybatch values (null, '3')");
			stat.addBatch("insert into mybatch values (null, '4')");
			stat.executeBatch();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtil.close(conn, stat, null);
		}
	}
}

PreparedStatement实现批处理:

优点:能够预处理,执行效率高;参数不同的同一条sql语句执行简便

缺点:只能批处理参数不同的同一条sql语句

package com.itheima.batch;

import java.sql.Connection;
import java.sql.PreparedStatement;

import org.junit.Test;

import com.itheima.util.DBUtil;

public class PrepBatch {

	@Test
	public void prepBatch() {

		Connection conn = null;
		PreparedStatement ps = null;
		try{
			conn = DBUtil.getConn();
			ps = conn.prepareStatement("insert into mybatch value(null, ?)");
			for(int i = 0; i < 1000; i++) {
				ps.setString(1, "name" + i);
				ps.addBatch();
			}
			ps.executeBatch();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtil.close(conn, ps, null);
		}
	}
}



时间: 2024-10-25 16:57:14

java实现sql语句批处理的相关文章

JAVA中用 SQL语句操作小结

1.添加记录(INSERT) 使用SQL语句的INSERT命令可以向数据库中插入记录,INSERT命令的基本形式为: INSERT INTO 表名 [(字段名1,字段名2-)] VALUES (值1,值2,-) 若在输入记录时,每个字段均有内容,可省略表名后的字段名. 该SQL语句用于将值1,值2--值n分别赋给字段1,字段2,--字段n, 并为表增加一条记录.在使用该命令时要注意下面两个规则: 插入的值必须和列一一对应. 插入值的数据类型必须和对应列的数据类型相一致. 比如使用下面这个命令就可

java中sql语句能不能加分号的问题?

一.原因  在程序运行中,当执行sql后总是报无效字符错误:但是把程序放在pl/sql中执行又没有错误.让我很纳闷!于是我开始查找资料,然后我终于发现了问题. 二.问题剖析 原来在程序中:如果你在程序里面写sql,就不要加分号,在程序里面编译器会把分号当做sql本身的一部分,所以会报错. 如果是在查询工具里面(比如plsql),这个时候可以加上分号,在工具里面已经做过预处理,分号是个分隔符,看到分号就标志着本条sql语句结束了: 因此java中sql语句能不能加分号.

Java中sql语句的引号问题

1..sql语句 在数据库中,当我们查询语句时,会使用类似的语句: Select * from userinfo where userid='1' or 1; Select * from userinfo where username="jfl"; 2.问题 Java通常需要连接数据库(Mysql,Oracle等)进行操作,在查询语句块中经常会用到where子句,在这里我们需要注意引号问题. 3.实例 在java中,我们需要将where子句的关键词变成变量,例如userid,usern

关于Java中SQL语句的拼接规则

实现目标语句是这个注意,这里的java变量是idd int idd; String sql = "SELECT id, piUrl FROM picinfos WHERE id BETWEEN '" + idd + "' AND 10" ; java中的字符串只能双引号,如果字符串中需要拼接变量,该变量用单引号括起来,然后加两个双引号再加两个加号,中间就是变量. 拼接步骤 写出SQL具体语句(无变量都是具体值的),比如上面的sql //查询picinfos表中id为

java之SQL语句

批量更新 //查询User表中的所有记录 ScrollableResults uScrollableResults = session.createQuery("from User") .setCacheMode(CacheMode.IGNORE) .scroll(ScrollMode.FORWARD_ONLY); int count = 0; //遍历User表中的全部记录 while(uScrollableResults.next()) { User user = uScrolla

[转帖]关于Java中SQL语句的拼接规则

自学demo 的时候遇到的问题 结果应该是 '"+e.getName()+"' 注意 一共有三组标点符号 (除去 方法函数后面的括号) 实现目标语句是这个注意,这里的java变量是idd int idd; String sql = "SELECT id, piUrl FROM picinfos WHERE id BETWEEN '" + idd + "' AND 10" ; java中的字符串只能双引号,如果字符串中需要拼接变量,该变量用单引号括

java执行多条SQL语句

一次执行多条SQL的技术要点如下: DatabaseMetaData接口是描述有关数据库的整体综合信息,由于DatabaseMetaData是接口,所以没有构造方法,故不能使用new来创建DatabaseMetaData对象,但是可以通过Connection的getMetaData()方法创建.例如:DatabaseMetaData md=con.getMetaData(). DatabaseMetaData类的supportsBatchUpdates方法用于判断此数据库是否支持批量更新.其返回

在线数据库表(sql语句)生成java实体类工具

相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设计的一定是数据库表结构,而不是实体类.实体类仅仅是对底层数据结构的有损压缩,它仅仅是数据载体,不具备数据归档能力. 因此,很多时候,我们需要将原始的SQL建表语句转换成java实体类,这项工作看似简单,但若人工完成,工作量也是相当可观的,而且难免会出现差错. 到目前为止,笔者还没有发现比较靠谱的此类

Java注解项目实战即模拟Hibenernate生成sql语句

整理了近期学习java注解的部分代码 ,借助java注解模拟Hibenernate ORM模型建立对象与sql语句的映射 Table 注解的创建 package com.imooc.test; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.