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);
跳过对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);