繁体   English   中英

使用DataSet时数据库未更新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM