我需要將數據複製到具有標識列的MSSQLServer 2005數據庫表中。如何設置JDBC PreparedStatement的IDENTITY_INSERT選項?
我已經看到了如何通過插入查詢之前執行
SET IDENTITY_INSERT <table> ON
禁用標識列。
如何在使用PreparedStatements進行批量插入時執行此操作,並且在操作過程中無法更改語句?
我需要將數據複製到具有標識列的MSSQLServer 2005數據庫表中。如何設置JDBC PreparedStatement的IDENTITY_INSERT選項?
我已經看到了如何通過插入查詢之前執行
SET IDENTITY_INSERT <table> ON
禁用標識列。
如何在使用PreparedStatements進行批量插入時執行此操作,並且在操作過程中無法更改語句?
D'oh。很容易,想通了,我想。
首先創建一個語句,執行SET IDENTITY_INSERT ON。關閉聲明。
創建PreparedStatement,做批處理,關閉preparedstatement。
創建語句,執行SET IDENTITY_INSERT OFF。關閉並整理。
歡迎任何問題或改進意見與此...
可以包括SET IDENTITY_INSERT ON/OFF
作爲準備語句的一部分。這樣你只能從客戶端的角度執行一個命令。
@Brabster遲了幾年,但對任何需要做類似事情的人來說都是有用的。您可以設置identity_insert
on
和off
與字符串中的級聯語句傳遞給prepareStatement()
:
myStatement.prepareStatement("SET IDENTITY_INSERT MY_TABLE ON;INSERT INTO MY_TABLE ...;SET IDENTITY_INSERT MY_TABLE OFF");
帕特urself就回來:) – 2009-06-15 12:38:39
你應該能夠做到這一點作爲一個準備好的聲明的一部分,你只需要分開線路。 – Yishai 2009-06-15 12:48:48