如何为JDBC PreparedStatement设置IDENTITY_INSERT选项?

时间:2009-06-15 12:19:16

标签: sql-server jdbc batch-file prepared-statement identity-insert

我需要将数据复制到具有标识列的MSSQLServer 2005数据库表中。

我已经看过如何通过执行

来禁用标识列
SET IDENTITY_INSERT <table> ON
在插入查询之前

当我使用PreparedStatements进行批量插入时我怎么能这样做?我不能在操作期间更改语句?

3 个答案:

答案 0 :(得分:2)

D'哦。很容易,我想是想通了。

首先创建一个Statement,执行SET IDENTITY_INSERT ON。关闭声明。

创建PreparedStatement,批量处理,关闭预备声明。

创建一个Statement,执行SET IDENTITY_INSERT OFF。关闭整理。

欢迎任何有关此问题的改进或建议......

答案 1 :(得分:2)

您可以将SET IDENTITY_INSERT ON/OFF作为预备声明的一部分。这样,您只能从客户端的角度执行一个命令。

答案 2 :(得分:1)

@Brabster迟了几年,但对于需要做类似事情的人来说,它可能会有用。您可以在传递给identity_insert的字符串中使用连接语句设置on offprepareStatement()

myStatement.prepareStatement("SET IDENTITY_INSERT MY_TABLE ON;INSERT INTO MY_TABLE ...;SET IDENTITY_INSERT MY_TABLE OFF");