2013-07-30 68 views
2

我正在嘗試使用CommandBuilder生成包含標識列的插入語句。對於測試數據生成目的,我希望能夠插入值標識列之後標識插入已經在桌子上生成包含標識列的插入語句

var sql = "Select * from Table"; 
var dataAdapter = new SqlDataAdapter(sql, conn); 
dataAdapter.Fill(currentTable); 
var cb = new SqlCommandBuilder(dataAdapter); 

的命令生成器確實產生插入語句啓用的,但我不能讓它包括標識列。我正在爲許多表創建一個通用的解決方案,所以我想避免手動生成這些語句。有沒有辦法欺騙它包括所有列?

我也開不包括CommandBuilder的

回答

0

CommandBuilder的使用從數據庫中獲取模式,和命令建設過程中是不可配置的其他解決方案。唯一的選擇可能是類似替換「instert into(」與「insert into(id,」和「values(」with「values(@id,」)。不要忘記在參數集合中添加@id參數。

0

使用純SQL來做到這一點。

set IDENTITY_INSERT dbo.MyTable ON; 

insert into dbo.MyTable (id, ...) values (1, ...) 
... 

set IDENTITY_INSERT dbo.MyTable OFF; 
+0

我想避免這種方法,因爲,因爲這意味着我必須手動建立插入 – TGH

+0

我不確定你所說的「手工打造」的意思是你反對使用c#字符串操作來「構建」一個SQL插入語句,可能在一個循環中,將用在'SqlCommand'中? –

相關問題