使用数据集时数据库未更新

本文关键字:更新 数据库 数据集 | 更新日期: 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后,一切都正常了。