【发布时间】:2018-10-22 04:02:34
【问题描述】:
我正在尝试更新一列并删除从 sql 表中检索到的 DataTable 中它后面的行,只要该列等于一个值并且后面的行中的同一列以另一个值开头。
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Con"].ConnectionString);
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * from tbl_Copy_Journal", con);
DataSet Journals = new DataSet();
adapter.Fill(Journals, "tbl_Copy_Journal");
foreach (DataTable table in Journals.Tables)
{
for (int i = 0; i < Journals.Tables[0].Rows.Count; i++)
{
String action = Journals.Tables[0].Rows[i]["Action"].ToString();
if (action == "reading dispensed")
{
String action1= Journals.Tables[0].Rows[i+1]["Action"].ToString();
if (action1.StartsWith("Referred"))
{
String _Action = Journals.Tables[0].Rows[i]["Action"].ToString() + ", " + Journals.Tables[0].Rows[i + 1]["Action"].ToString();
Journals.Tables[0].Rows[i + 1].Delete();
Journals.Tables[0].Rows[i]["Action"] = _Action;
}
adapter.Update(Journals, "tbl_Copy_Journal");
Journals.AcceptChanges();
}
}
}
代码返回当传递带有修改行的 DataRow 集合时,Update 需要一个有效的 UpdateCommand。 有没有办法删除和更新数据表中的行并修复此代码。任何帮助表示赞赏。
【问题讨论】:
-
只是一个见解...您声明
int index和int index1并且从不使用它们。 -
谢谢,我更新了我的代码,它们只是为了跟踪。你觉得我怎么解决这个问题?
-
错误就在眼前。对于您可能执行的每个操作(SELECT、INSERT、UPDATE 和 DELETE),适配器都需要一个命令。您只提供了一个 SELECT 命令。 Check this
-
还要在
adapter.Fill(Journals, "tbl_Copy_Journal")之后检查this answer、adapter.UpdateCommand = new SqlCommandBuilder(adapter).GetUpdateCommand();
标签: c# datatable dataset rows sqldataadapter