用 PreparedStatement 向 SqlServer 中一次性插入多条记录

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

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

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

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

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

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

若是只是写成 编译

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

而后试图进行下面的操做 阅读全文 >>block

相关文章
相关标签/搜索