C#DataAdapter,DataTable - >不更新回SQL Server表

时间:2011-11-17 05:46:31

标签: c# sql dataadapter

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

好的,我想将我的问题扩展到我最初的努力......我从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);