使用DataSet时数据库不更新

时间:2013-08-22 10:15:31

标签: c# dataset datarow

我正在做一个小项目来学习如何使用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

3 个答案:

答案 0 :(得分:3)

您需要调用适配器的Update方法来传播更改

AcceptChanges仅更新行的内存更改,不会将这些更改迁移到数据库

  

MSDN   AcceptChanges和RejectChanges仅适用于与DataRow相关的更改   (即添加,删除,删除和修改)。它们不适用于   架构或结构变化。

     

调用AcceptChanges不会将这些更改复制回   数据源是否使用DataAdapter填充DataSet。在那里面   情况,请改为调用更新   有关详细信息,请参阅Updating Data Sources with DataAdapters

答案 1 :(得分:2)

重要的是要记住,DataSet是数据的“本地副本”,而不是数据库的“实时链接”。例如,如果您的DataSet由IDataAdaptor(例如TableAdaptor)填充,则需要调用DataAdaptors Update方法传入Updated dataset以将结果同步回底层数据库。

此外我怀疑你不想做'新的ApplicationTableAdapter()',因为通常你想要用你填充的TableAdaptor更新,至少你需要确保你有正确的连接,查询等设置。

答案 2 :(得分:1)

解决方案:代码中没有任何问题。我在App.config中定义了两个ConnectionString。在删除之前有错误的数据库之后,我忘了删除第一个。删除第一个ConnectionString后,一切正常。