MySQL批处理 - executeBatch方法使用

1.假设使用事务:

 (1)不使用批处理而是一条一条的SQL语句发送给MySQL的方式,如果有很多语句这样执行,每次到要和MySQL通讯,开销太大;另一方面,这样执行的SQL语句如果中间有一条发送错误,后面的SQL语句是不会执行的,理解为抛出异常,后面的语句当然就不执行了

 (2)使用批处理方法,一次过将要执行的SQL语句发送给MySQL,MySQL的机制是:中间有语句错误,后面正确的语句还是会执行

2.假设不使用事务:这个简单,只要事务控制对了,中间有错的话都回滚就是了,后面的SQL语句就无所谓执不执行了

下面给一个executeBatch的Demo

package cn.bl.v2;

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

import org.junit.Test;

import cn.bl.DBUtil;

/**
 * 批处理
 * @author BarryLee
 * @2018年9月18日@下午11:15:50
 */
public class Batch {
	
	//1.Statement方式
	@Test
	public void test1() throws Exception {
		Connection conn = DBUtil.getConnection();
		Statement st = conn.createStatement();
		for(int i = 0;i<10;i++) {
			//这个sql没什么意义,只是为了区分插入的不同数据罢了
			String sql1 = " insert into pp(name) values('xl"+i+"') ";
			st.addBatch(sql1);
		}
		
		//删除name以xl开头的记录
		String sql2 = " delete from pp where name like 'xl%' ";
		st.addBatch(sql2);
		
		int[]res = st.executeBatch();
		for (int i : res) {//每一行sql的影响记录数
			System.out.println(i);
			//sql1都是输出1
			//sql2对应的是10
		}
	}
	
	//2.PreparedStatement方式
	@Test
	public void test2() throws Exception {
		Connection conn = DBUtil.getConnection();
		String sql = " insert into pp(name) values(?) ";
		PreparedStatement pst = conn.prepareStatement(sql);
		for(int i = 0;i<10;i++) {
			pst.setString(1, "xl"+i);
			pst.addBatch();//这里不能带参
		}
		sql = " delete from pp where name like 'xl%' ";
		pst.addBatch(sql);
		
		int[]res = pst.executeBatch();
		for (int i : res) {//每一行sql的影响记录数
			System.out.println(i);
			//for循环里面添加的sql语句对应的都是输出1
			//最后一句对应的是10
		}
	}
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MATLAB中向MySQL表格中写入数据,你可以使用数据库工具箱的函数。下面是一个示例,展示了如何连接到MySQL数据库并向表格中插入数据: ```matlab % 连接到MySQL数据库 conn = database('database_name', 'username', 'password', 'com.mysql.jdbc.Driver', 'jdbc:mysql://localhost:3306/database_name'); % 创建要插入的数据 data = {'John', 'Doe', 25; 'Jane', 'Smith', 30}; % 构建插入语句 tableName = 'table_name'; colNames = {'FirstName', 'LastName', 'Age'}; insertQuery = sprintf('INSERT INTO %s (%s) VALUES (?, ?, ?)', tableName, strjoin(colNames, ',')); % 执行插入操作 stmt = conn.prepareStatement(insertQuery); for i = 1:size(data, 1) for j = 1:size(data, 2) stmt.setString(j, data{i,j}); end stmt.addBatch(); end stmt.executeBatch(); % 关闭数据库连接 close(conn); ``` 在上面的示例中,你需要替换 `'database_name'`、`'username'`、`'password'`、`'table_name'` 和连接URL `'jdbc:mysql://localhost:3306/database_name'` 为你实际的数据库信息。 然后,你可以使用 `data` 变量来存储要插入的数据。根据表格的列顺序,你需要调整 `colNames` 变量来匹配列名。 最后,通过执行 `INSERT INTO` SQL语句将数据插入到表格中。使用 `setString` 函数将数据绑定到预处理语句中的参数,然后使用 `addBatch` 将多个插入操作添加到批处理中,最后使用 `executeBatch` 执行批处理。 确保已正确安装和配置数据库工具箱,并具有适当的访问权限来连接和写入MySQL数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值