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