博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用 PreparedStatement 向 SqlServer 中一次性插入多条记录
阅读量:7232 次
发布时间:2019-06-29

本文共 642 字,大约阅读时间需要 2 分钟。

标准 SQL 都提供了下面这种方式一条 INSERT INTO 语句插入多条记录

INSERT INTO Customers(Id, Name, Age) VALUES (1, 'Name1', 21.5), (2, 'Name2', 32.3)

VALUES 之后用括号列出每一条记录。但是在 Java 中想把上面的语句转换成 PreparedStatement  来插入多条记录时就有些问题。要么写成

INSERT INTO Customers(Id, Name, Age) VALUES(?, ?, ?), (?, ?, ?), (?, ?, ?) ....

我们不知道 VALUES 后应该列多少个问号,而且  JDBC 对参数的个数是有限制的,最多 2000 个参数。如果根据字段个数来算一次添加多少条记录,那么这条 SQL 语句也是动态的,不能很好的作为 PreparedStatement 进行预编译。以一个表三个字段为例,2000 个参数下一次性最多能插入记录数 666 条,也可能由于输入是 666 条记录的任意数量,所以生成的语句非静态的。

这种方式与每次手动拼凑一个完全静态的 INSERT INTO 语句应该不会有太多的差别。

如果只是写成 

INSERT INTO Customers(Id, Name, Age) VALUES(?, ?, ?)

然后试图进行下面的操作 

转载于:https://my.oschina.net/u/2791/blog/1925352

你可能感兴趣的文章
SVN目录权限设置
查看>>
[Angular] Organizing Your Exports with Barrels
查看>>
DTO的一些理解(转载)
查看>>
Java面试题全集(下)
查看>>
星云測试- Android应用深度体检专业平台
查看>>
Spring配置动态数据源-读写分离和多数据源
查看>>
LindAgile.Modules模块化的设计
查看>>
Openwrt配置小记
查看>>
OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解
查看>>
msyql null 引起的错误
查看>>
Java中的泛型
查看>>
7月书讯:最是那一低头阅读的温和
查看>>
Woody的Python学习笔记1
查看>>
Linux IO操作——RIO包
查看>>
Vue2+VueRouter2+webpack 构建项目实战(二):目录以及文件结构
查看>>
每天一个JavaScript实例-检測表单数据
查看>>
C语言在linux内核中do while(0)妙用之法
查看>>
Ajax中使用jquery实现三种格式的信息
查看>>
我对REST的理解
查看>>
Android 百度地图开发(一)
查看>>