【发布时间】:2011-12-31 13:56:48
【问题描述】:
我将 select * from 一个 Excel 电子表格转换为 DataTable dt。我想获取这些值并更新 SQL 表。 SQL 表的存在是因为从原始 Excel 电子表格手动导入 SQL,具有主键集。用户更新了 excel 表,我需要更新 SQL 值。我将dt.RowState 设置为修改以调用更新。我没有收到错误,但 SQL 表没有更新。之前的测试显示我的SQL权限和连接都很好,可以修改表了。
connectionToSQL = new SqlConnection(SQLConnString);
connectionToSQL.Open();
var cmd = new SqlCommand("SELECT * FROM TAGS$",connectionToSQL);
var da = new SqlDataAdapter(cmd);
var b = new SqlCommandBuilder(da);
foreach (DataRow r in dt.Rows)
{
r.SetModified();
}
da.Update(dt);
【问题讨论】:
-
提供的代码中没有任何内容可以实际修改任何 DataRow 对象,也没有让我们了解您希望能够修改的数据库中的任何示例列名。请在 foreach 循环中添加一个修改列值的示例,然后自己再次测试您仍然没有看到执行的 UPDATE 语句,我们可以深入研究。
-
这个 dt 是从哪里来的?尝试分配您的数据表,因为您的 foreach 没有循环任何内容?
-
您是否考虑过使用SQL profiler 来查看是否有任何SQL 实际进入SQL 服务器?
-
dt 来自“我从 Excel 电子表格中选择 * 到 dt”。
-
我没有修改 dt 中的值。请重新阅读问题。来自 excel 的 dt 中的值与 SQL 表中的值不同。 foreach 循环手动将行状态设置为“已修改”以调用 UPDATE。
标签: c# dataadapter rowstate