如何为 JDBCPreparedStatement 设置 IDENTITY_INSERT 选项?

发布于 2024-07-23 12:00:48 字数 220 浏览 7 评论 0原文

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

我已经了解了如何通过

SET IDENTITY_INSERT <table> ON

在插入查询之前执行来禁用标识列。

当我使用PreparedStatements进行批量插入并且在操作过程中无法更改语句时,我该如何做到这一点?

I need to copy data into an MSSQLServer 2005 database table which has an identity column.

I've seen how to disable the identity column by executing

SET IDENTITY_INSERT <table> ON

before the insert queries.

How can I do this when I'm using PreparedStatements to do batch inserts and I can't change the statement during the operation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

尬尬 2024-07-30 12:00:48

@Brabster 晚了几年,但它可能对任何需要做类似事情的人有用。 您可以使用传递给 prepareStatement() 的字符串中的串联语句来设置 identity_insert onoff

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

@Brabster A few years late, but it may be useful to anyone who needs to do something similar. You can set identity_insert on and off with concatenated statements within the string you pass to prepareStatement():

myStatement.prepareStatement("SET IDENTITY_INSERT MY_TABLE ON;INSERT INTO MY_TABLE ...;SET IDENTITY_INSERT MY_TABLE OFF");
深陷 2024-07-30 12:00:48

您可以将 SET IDENTITY_INSERT ON/OFF 包含在准备好的语句中。 这样,从客户端的角度来看,您只执行一个命令。

You can include SET IDENTITY_INSERT ON/OFF as part of the prepared statement. This way you only execute one command from the perspective of the client.

噢。 很简单,我想明白了。

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

创建PreparedStatement,执行批处理,关闭preparedstatement。

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

欢迎对此问题提出任何改进或建议...

D'oh. Easy, figured it out I think.

Create a Statement first, execute SET IDENTITY_INSERT ON. Close statement.

Create PreparedStatement, do batch stuff, close preparedstatement.

Create a Statement, execute SET IDENTITY_INSERT OFF. Close and tidy up.

Welcome any refinements or advice on issues with this...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文