我正在尝试获取数据集中的数据并插入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);
没有错误,但数据未插入数据库。
我哪里出错了?
答案 0 :(得分:0)
如果您dsINVStructure.AcceptChanges();
那么数据集中永远不会有任何值得发送到数据库的内容,因为数据集现在认为所有行都是Unchanged
。
如果datarow.RowState
为Added
,那么数据适配器将为INSERTed
,如果为Modified
则数据为UPDATEd
适配器。 AcceptChanges()
将所有Added
和Modified
行转换为Unchanged
状态,导致适配器忽略它们