C#数据库未更新使用数据集

时间:2017-07-24 13:14:29

标签: insert dataset

我正在尝试获取数据集中的数据并插入10个表。但无法在数据库中插入数据。 我使用下面的代码

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);

下一步, 操作并在DataSET的每个dataTable中插入记录

默认适配器的表映射,如数据表和数据库

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

尝试插入到数据库

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

没有错误,但数据未插入数据库。

  

我哪里出错了?

1 个答案:

答案 0 :(得分:0)

如果您dsINVStructure.AcceptChanges();那么数据集中永远不会有任何值得发送到数据库的内容,因为数据集现在认为所有行都是Unchanged

如果datarow.RowStateAdded,那么数据适配器将为INSERTed,如果为Modified则数据为UPDATEd适配器。 AcceptChanges()将所有AddedModified行转换为Unchanged状态,导致适配器忽略它们