2017-07-24 71 views
0

我想獲取數據集中的數據並插入10個表。但無法在數據庫中插入數據。 我使用下面的代碼C#數據庫未更新使用數據集

SqlCommand cmdData = new SqlCommand("exec proc_getDataStructure", con); 
SqlDataAdapter daData = new SqlDataAdapter(cmdData); 

proc_getDataStructure有10個選擇查詢,以獲得表 的結構是怎樣的

select * from tableX1 where 1=0 
. 
. 
select * from tableX10 where 1=0 

獲取地圖的DataAdapter

daData.Fill(dsData, "INV"); 

現在我有10個數據數據集 中的表名爲INV1,INV2,...,INV10

我會重命名數據表的原始表名稱查詢

RenameData(ref dsData); 

下一步, 做操縱和數據集的每個DataTable

待辦事項表映射用於插入記錄如數據表和數據庫中的默認適配器

daData.TableMappings.Add("Table", "tableX1"); 
. 
. 
. 
daData.TableMappings.Add("Table1", "tableX10"); 

嘗試插入數據庫

new SqlCommandBuilder(daData); 
dsINVStructure.AcceptChanges(); 
daData.Update(dsINVStructure); 

沒有錯誤,但和數據不被插入到數據庫中。

我哪裏錯了?

回答

0

如果dsINVStructure.AcceptChanges();則絕不會有數據集中值得發送到數據庫,因爲數據集現在認爲所有行Unchanged什麼。

如果datarow.RowStateAdded那麼這將是INSERTed通過數據適配器,如果是Modified那麼這將是UPDATEd通過數據適配器。 AcceptChanges()將所有AddedModified行轉換爲Unchanged狀態,導致適配器忽略它們