c#数据适配器,数据表->不更新回SQL Server表

本文关键字:更新 SQL Server 适配器 数据 数据表 | 更新日期: 2023-09-27 18:15:01

我编写了一个简单的测试来检查我的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);

c#数据适配器,数据表->不更新回SQL Server表

跳过对AcceptChanges的调用,代码应该可以正常工作。它将所有行标记为未修改,因此Update调用没有什么可做的。

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

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);