使用数据集时数据库未更新
本文关键字:更新 数据库 数据集 | 更新日期: 2023-09-27 18:28:40
我正在做一个小项目来学习如何使用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
只更新该行内存中的更改,不将这些更改迁移到数据库
MSDNAcceptChanges和RejectChanges仅适用于与DataRow相关的更改(即,添加、删除、删除和修改)。它们不适用于模式或结构变化。
调用AcceptChanges不会将这些更改复制回数据源(如果使用DataAdapter填充数据集)。因为情况,请改为调用Update有关更多信息,请参阅使用DataAdapters更新数据源
重要的是要记住,数据集是数据的"本地副本",而不是数据库的"实时链接"。例如,如果数据集由IDataAdaptor(比如TableAdaptor)填充,则需要调用传入Updated数据集的DataAdaptors-Update方法,以将结果同步回基础数据库。
此外,我还怀疑你不想做"new ApplicationTableAdapter()",因为通常你会想用你填充的TableAdapter进行更新,至少你需要确保你设置了正确的连接、查询等。
解决方案:碰巧代码没有任何问题。我在App.config中定义了两个ConnectionString。在删除了以前有错误的数据库后,我忘记删除第一个。删除第一个ConnectionString后,一切都正常了。