java:sqlServer批量插入

导入jar包: sqljdbc4-4.2.jar 提取码:ifti — maven导入方法

import java.sql.*;
public class BatchInsertUtil {

	/**
     * @param list 要保存的对象集
     * @throws Exception 插入对象失败
     */
	public void batchInsert(List<Object> list) throw Exception{
		CachedRowSetImpl crs = getCachedRowSet(tableName);
        for (Object obj: list) {// 将对象转化为行数据
            crs.moveToInsertRow();// 以动指针到插入行(虚拟行)
            // 设置虚拟行相应的字段与数值;注意:字符串中的字段名与类型要与数据表中的一致
            crs.updateLong("id", obj.getId());
            crs.updateString("name", obj.getName());
            crs.updateString("remark", obj.getRemark());
            ......
            crs.insertRow();// 将虚拟行插入缓存
            crs.moveToCurrentRow();// 将指针移动到当前行
        }
        SQLServerBulkCopy bulkCopy = getSqlServerBulkCopy(tableName, crs,list.size());
	}
    
   /**
     * @param con 链接对象
     * @param tableName 表名字
     * @return 数据表字段初始化的数据对象
     * @throws SQLException 
     */
    public CachedRowSetImpl getCachedRowSet(String tableName){
        Connection con =  connection(url,username,password);// 链接方式固定(配置)
        String sql = "select * from " + tableName + " where 1=0";
        PreparedStatement ps = con.prepareStatement(sql);// 执行sql语句封装
        ResultSet rs = ps.executeQuery();// 执行语句
        CachedRowSetImpl crs = new CachedRowSetImpl();// 创建行操作对象
        crs.populate(rs);// 设置表字段
        rs.close();// 关闭流资源
        con.close();// 关闭数据库链接
        return crs;// 返回含有表字段的行操作对象
    }
    
   /**
     * @param url 链接URL
     * @param username 用户名
     * @param password 密码
     * @return 链接对象
     * @throws Exception 建立链接失败异常
     */
    public Connection connection(url,username,password) throws Exception{
    	Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        return DriverManager.getConnection(url,username,password);
    }

   /**
     * @param tableName 表名字
     * @param crs 链接对象
     * @return 数据表字段初始化的数据对象
     * @throws SQLException 
     */
	public void saveRows(String tableName,CachedRowSetImpl crs,int size){
		String url = String url = "jdbc:sqlserver://localhost:1433;DatabaseName=datebaseName;user=userName;password=userPassword";
		SQLServerBulkCopyOptions copyOptions = new SQLServerBulkCopyOptions();
        copyOptions.setKeepIdentity(true);
        copyOptions.setBatchSize(size);// 设置批量插入的数量
        copyOptions.setUseInternalTransaction(true);// 开启事务
        SQLServerBulkCopy bulkCopy = new SQLServerBulkCopy(url);// 配置url
        bulkCopy.setBulkCopyOptions(copyOptions);// 设置批量操作参数
        bulkCopy.setDestinationTableName(tableName);// 设置要操作的表名
        bulkCopy.writeToServer(crs);// 将数据保存到数据库
        crs.close();// 释放资源
        bulkCopy.close();// 释放资源
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值