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.RowStateAdded,那么数据适配器将是INSERTed,如果是Modified,那么数据适配器将是UPDATEdAcceptChanges() 将所有 AddedModified 行转换为 Unchanged 状态,导致适配器忽略它们

【讨论】:

以上是关于C# 数据库未更新使用数据集的主要内容,如果未能解决你的问题,请参考以下文章

C# - 数据集(/插入/更新多个表)

数据未更新到数据库 c# datagridview

当数据集WriteXml()函数生成xml文件时,C#如何使用XDocument类更新xml文件

C# Datagridview 行未通过插入数据库更新

c#中关于数据集dataset和dataadpter的问题

记录插入成功但数据库未更新 C# 和 SQL Server Compact 数据库