![](/img/trans.png)
[英]How to use SqlCommand and DataAdapter in order to manipulate SQL Server with C#
[英]C# DataAdapter, DataTable -> not updating back to SQL Server table
我编写了一个简单的测试来检查我的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表。 (由于从原始Excel电子表格中手动导入到SQL,SQL表的存在,具有主键集,用户更新excel工作表,我需要更新SQL值。)我正在将RowState设置为Modifyed以努力调用更新。
connectionToSQL =新的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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.