[英]Database not updating when using DataSet
我正在做一个小项目,以学习如何使用DataSet
但是我有一个小问题。 考虑以下代码:
foreach (DatabaseDataSet.ApplicationRow rowApplication in database.Application)
{
if (rowApplication.AID.ToString() == lblIDApplication.Text)
{
rowApplication.Date= tbApplicationDatum.Text;
rowApplication.Status = tbApplicationStatus.Text;
applicationAdapter.Update(rowApplication);
break;
}
}
我不知道为什么,但是数据库没有更新。 DataRow正在更新,因为当我再次调用数据时,我看到了新值。 但是,当我重新运行应用程序时,它又回到了原来的价值。 有什么帮助吗?
编辑:我使用强类型工作DataSet
您需要调用适配器的Update
方法来传播更改
AcceptChanges
仅更新该行的内存更改,而不会将这些更改迁移到数据库
MSDN AcceptChanges和RejectChanges仅适用于与DataRow相关的更改(即,添加,删除,删除和修改)。 它们不适用于架构或结构更改。
如果使用DataAdapter填充了DataSet,则调用AcceptChanges不会将这些更改复制回数据源。 在这种情况下,请致电Update,而不是参阅“ 使用DataAdapters更新数据源”以获取更多信息。
重要的是要记住,数据集是数据的“本地副本”,而不是到数据库的“实时链接”。 例如,如果您的数据集是由IDataAdaptor(假设为TableAdaptor)填充的,则您需要调用DataAdaptors Update方法,并传入Updated数据集,以将结果同步回基础数据库。
我也会怀疑您不想做'new ApplicationTableAdapter()',因为通常您希望使用填充的TableAdaptor进行更新,至少您需要确保已建立正确的连接,查询等。
解决方案:碰巧代码没有错。 我在App.config中定义了两个ConnectionString。 在删除以前的数据库中有错误之后,我忘记删除第一个数据库。 删除第一个ConnectionString后,一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.