2

我有一张有大约 100-200 条记录的表。我已将这些记录提取到数据集中。

现在我正在使用 foreach 遍历所有记录

dataset.Tables[0].AsEnumerable()

我想为循环中的每条记录更新一列。我怎样才能做到这一点。使用相同的数据集。

4

5 回答 5

3

您应该使用用于填充 DataSet 并调用 Update 方法的原始 DataAdapter(adapter在下面的代码中),您还需要 CommandBuilder,这取决于您使用的数据库,这是 SQL 服务器的示例:

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(dataset);
dataset.AcceptChanges();

这是一个很好的例子:

http://support.microsoft.com/kb/307587

于 2012-07-19T14:36:01.540 回答
3

我假设您使用数据适配器通过选择命令填充数据集?

要编辑数据表中的数据并将更改保存回数据库,您需要数据适配器的更新命令。像这样的东西:-

SQLConnection connector = new SQLConnection(@"Your connection string");

SQLAdaptor Adaptor = new SQLAdaptor();

Updatecmd = new sqlDbCommand("UPDATE YOURTABLE SET FIELD1= @FIELD1, FIELD2= @FIELD2   WHERE ID = @ID", connector);

您还需要为字段添加参数:-

Updatecmd.Parameters.Add("@FIELD1", SQLDbType.VarCHar, 8, "FIELD1");
Updatecmd.Parameters.Add("@FIELD2", SQLDbType.VarCHar, 8, "FIELD2");

var param = Updatecmd.Parameters.Add("@ID", SqlDbType.Interger, 6, "ID");
param.SourceVersion = DataRowVersion.Original;

使用正确的 SQL 语句创建更新命令并添加参数后,您需要将其分配为数据适配器的插入命令:-

Adaptor.UpdateCommand = Updatecmd;

您需要自己阅读如何执行此操作,查看一些示例,这是一个粗略的指南。

下一步是枚举您的数据表,您不需要 LINQ,您可以这样做:-

  foreach(DataRow row in Dataset.Tables[0].Rows)
    {
        row["YourColumn"] = YOURVALUE;
    }

完成后,您需要像这样调用您的数据适配器的 Update() 方法:-

DataAdapter.Update(dataset.Tables[0]);

这里发生的是数据适配器调用更新命令并将更改保存回数据库。

请注意,如果希望向数据库添加新行,则需要数据适配器的插入命令。

从我的脑海中,这是非常粗略的编码,因此语法可能会稍微有些出问题。但希望能有所帮助。

于 2012-07-19T16:26:24.303 回答
0

步骤如下: - 创建一个新的 DataColumn[^] - 将其添加到数据表的 Columns[^] 集合中 - 例如使用 NewRow[^] 创建一个 DataRow [^] - 根据每行修改行的值需要使用 Item[^] 索引器 - 将行添加到 Rows[^] 集合 - 成功修改后 AcceptChanges[^]

于 2012-07-19T14:09:55.513 回答
-1

像这样:

DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("ProductName");

table.Rows.Add(1, "Chai");
table.Rows.Add(2, "Queso Cabrales");
table.Rows.Add(3, "Tofu");

EnumerableRowCollection<DataRow> Rows = table.AsEnumerable();

foreach (DataRow Row in Rows)
    Row["ID"] = (int)Row["ID"] * 2;
于 2012-07-19T13:24:30.603 回答
-1

添加如下所示的列。

dataset.Tables[0].Columns.Add(new DataColumn ("columnname"));

更新列值,如下所示。

for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++) { dataset.Tables[0].Rows[i]["columnname"] = "new value here"; }

更新数据库

dataset.AcceptChanges();

于 2012-07-19T14:13:47.180 回答