1

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

4

3 回答 3

3

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

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

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

如果使用 DataAdapter 填充 DataSet,则调用 AcceptChanges 不会将这些更改复制回数据源。在这种情况下,请改为调用 Update 请参阅使用 DataAdapters 更新数据源以获取更多信息

于 2013-08-22T10:19:56.513 回答
2

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

另外,我怀疑您不想执行“new ApplicationTableAdapter()”,因为通常您希望使用填充的 TableAdaptor 进行更新,至少您需要确保设置了正确的连接、查询等。

于 2013-08-22T10:25:38.327 回答
1

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

于 2013-08-22T14:42:36.713 回答