C# 数据库未更新使用数据集
Posted
技术标签:
【中文标题】C# 数据库未更新使用数据集【英文标题】:C# Database not updated Using dataset 【发布时间】:2017-07-24 13:14:29 【问题描述】:我正在尝试获取数据集中的数据并插入 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
获取地图数据适配器
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】:如果您dsINVStructure.AcceptChanges();
,那么数据集中将永远不会有任何值得发送到数据库的内容,因为数据集现在认为所有行都是Unchanged
。
如果datarow.RowState
是Added
,那么数据适配器将是INSERTed
,如果是Modified
,那么数据适配器将是UPDATEd
。 AcceptChanges()
将所有 Added
和 Modified
行转换为 Unchanged
状态,导致适配器忽略它们
【讨论】:
以上是关于C# 数据库未更新使用数据集的主要内容,如果未能解决你的问题,请参考以下文章