【问题标题】:C# DataAdapter, DataTable -> not updating back to SQL Server tableC# DataAdapter、DataTable -> 不更新回 SQL Server 表
【发布时间】:2011-12-31 01:14:26
【问题描述】:

我编写了一个简单的测试来检查我的 dataAdapter 代码。我连接到 SQL Server 数据库,填写数据表,连续更改一个值,然后调用 da.Update(table) 将更改发送回 SQL Server。该表有一个主键。完全不知道为什么这不起作用......(见代码)

connectionToSQL = new SqlConnection(SQLConnString);
connectionToSQL.Open();

var wktbl = new DataTable();

var cmd = new SqlCommand("SELECT * FROM TAGS$",connectionToSQL);                 
var da = new SqlDataAdapter(cmd);
var b = new SqlCommandBuilder(da);
da.Fill(wktbl);

wktbl.Rows[3][2] = "5";
wktbl.AcceptChanges();

da.Update(wktbl);

【问题讨论】:

  • 你不能这样更新。在这里填写数据表中的值之后,您对数据表所做的任何更改都只会与它有关。而且您必须再次编写一些查询以进行类似的更新以进行选择。并调用 ExecuteNonQuery() 来执行更新。
  • @skk:SqlDataAdapter 自动构建 UPDATE 查询,然后da.Fill 应该使用它来更新数据库。 @user1051076 可能是对 AcceptChanges 的调用打破了这一点,因为它将所有行状态重置为未更改...

标签: c# sql dataadapter


【解决方案1】:

只需跳过对AcceptChanges 的调用,代码应该可以正常工作。它将所有行标记为未修改,因此您的 Update 调用无需执行任何操作。

【讨论】:

  • 我同意达米尔的观点。您通常会在 执行更新之后调用 AcceptChanges。
  • @MoeSisko:你根本不需要打电话给AcceptChanges,因为Update 也可以。
  • 啊,是的,删除接受更改有效。感谢您提供有关“修改状态”的信息。这实际上是对以前无法运行的代码的测试,所以我会继续努力,看看是否需要更多帮助。
  • 好的,我想将我的问题扩展到我最初的工作......我从 Excel 电子表格中选择 * 到 dt。我想获取这些值并更新 SQL 表。 (SQL 表存在是因为从原始 Excel 电子表格手动导入到 SQL,有一个主键集,用户更新了 excel 表,我需要更新 SQL 值。)我将 RowState 设置为修改以努力调用更新。
【解决方案2】:

好的,我想将我的问题扩展到我最初的工作......我从 Excel 电子表格中选择 * 到 dt。我想获取这些值并更新 SQL 表。 (SQL 表的存在是因为从原始 Excel 电子表格手动导入到 SQL,有一个主键集,用户更新了 excel 表,我需要更新 SQL 值。)我正在将 RowState 设置为修改以努力调用更新。

connectionToSQL = new SqlConnection(SQLConnString); connectionToSQL.Open();

            var cmd = new SqlCommand("SELECT * FROM TAGS$",connectionToSQL);                 
            var da = new SqlDataAdapter(cmd);
            var b = new SqlCommandBuilder(da);

            //dt.Rows[3][2] = "20";

            foreach (DataRow r in dt.Rows)
            {
                r.SetModified();
            }

            da.Update(dt);

【讨论】:

  • “我想将我的问题扩展到我最初的努力”。如果您想更改您的问题,您应该编辑您的问题或提出一个新问题。您添加了一个答案,但不会按预期收到。
  • 很高兴我能帮上忙。我看到你添加了新问题。您可能应该删除此答案。
猜你喜欢
  • 2011-12-31
  • 1970-01-01
  • 2016-04-25
  • 2019-12-13
  • 2012-08-09
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多