Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否在数据库表中使用DataTable更新?_C#_.net_Ado.net - Fatal编程技术网

C# 是否在数据库表中使用DataTable更新?

C# 是否在数据库表中使用DataTable更新?,c#,.net,ado.net,C#,.net,Ado.net,我有一张有大约100-200条记录的桌子。 我已将这些记录提取到数据集中 现在我正在使用foreach遍历所有记录 dataset.Tables[0].AsEnumerable() 我想为循环中的每条记录更新一列。我怎样才能做到这一点。使用相同的数据集。如下所示: DataTable table = new DataTable(); table.Columns.Add("ID", typeof(int)); table.Columns.Add("ProductName"); table.Ro

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

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

dataset.Tables[0].AsEnumerable()
我想为循环中的每条记录更新一列。我怎样才能做到这一点。使用相同的数据集。

如下所示:

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;
DataTable=newdatatable();
表.列.添加(“ID”,类型(int));
table.Columns.Add(“ProductName”);
表.行.添加(1,“柴”);
表.行.添加(2,“Queso Cabrales”);
表.行.添加(3,“豆腐”);
EnumerablerRowCollection行=table.AsEnumerable();
foreach(数据行中的行)
行[“ID”]=(int)行[“ID”]*2;
像这样:

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;
DataTable=newdatatable();
表.列.添加(“ID”,类型(int));
table.Columns.Add(“ProductName”);
表.行.添加(1,“柴”);
表.行.添加(2,“Queso Cabrales”);
表.行.添加(3,“豆腐”);
EnumerablerRowCollection行=table.AsEnumerable();
foreach(数据行中的行)
行[“ID”]=(int)行[“ID”]*2;

步骤如下: -创建新的数据列[^] -将其添加到数据表的列[^]集合中 -创建数据行[^],例如使用NewRow[^] -使用项[^]索引器根据需要修改行的值 -将该行添加到行[^]集合
-成功修改AcceptChanges[^]

后,步骤如下: -创建新的数据列[^] -将其添加到数据表的列[^]集合中 -创建数据行[^],例如使用NewRow[^] -使用项[^]索引器根据需要修改行的值 -将该行添加到行[^]集合
-成功修改后,AcceptChanges[^]

添加如下列

dataset.Tables[0].Columns.Add(newdatacolumn(“columnname”)

更新列值,如下所示


for(int i=0;i添加如下列

dataset.Tables[0].Columns.Add(新数据列(“columnname”);

更新列值,如下所示


对于(int i=0;i您应该使用用于填充数据集和调用更新方法的原始DataAdapter(
下面代码中的adapter
),您还需要CommandBuilder,这取决于您使用的数据库,以下是SQL server的示例:

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(dataset);
dataset.AcceptChanges();
下面是一个很好的例子:


您应该使用原始的DataAdapter(
adapter
,在下面的代码中)来填充数据集和调用更新方法,您还需要CommandBuilder,这取决于您使用的数据库,下面是SQL server的示例:

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(dataset);
dataset.AcceptChanges();
下面是一个很好的例子:


我假设您使用数据适配器来填充数据集,使用Select命令

要编辑数据表中的数据并将更改保存回数据库,您需要数据适配器的更新命令。如下所示:-

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语句创建Update命令并添加参数后,需要将其指定为数据适配器的Insert命令:-

Adaptor.UpdateCommand = Updatecmd;
你需要自己阅读,通过一些例子,这是一个粗略的指南

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

  foreach(DataRow row in Dataset.Tables[0].Rows)
    {
        row["YourColumn"] = YOURVALUE;
    }
完成后,需要调用yout Data Adapter的Update()方法,如下所示:-

DataAdapter.Update(dataset.Tables[0]);
这里发生的事情是,数据适配器调用Update命令并将更改保存回数据库

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


这是非常粗略的编码,从我的头顶,所以语法可能有点不正确。但希望会有所帮助。

我假设您使用数据适配器填充数据集,并使用Select命令

要编辑数据表中的数据并将更改保存回数据库,您需要数据适配器的更新命令。如下所示:-

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语句创建Update命令并添加参数后,需要将其指定为数据适配器的Insert命令:-

Adaptor.UpdateCommand = Updatecmd;
你需要自己阅读,通过一些例子,这是一个粗略的指南

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

  foreach(DataRow row in Dataset.Tables[0].Rows)
    {
        row["YourColumn"] = YOURVALUE;
    }
完成后,需要调用yout Data Adapter的Update()方法,如下所示:-

DataAdapter.Update(dataset.Tables[0]);
这里发生的事情是,数据适配器调用Update命令并将更改保存回数据库

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


这是非常粗略的编码,从我的头顶上看,所以语法可能有点错误。但希望会有所帮助。

-1 AcceptChanges不会更新数据库,只是清除标记为更新的行。顺便说一句。为什么要发两篇帖子?因为我有一个会议,很匆忙,但决定尝试用代码而不是文字给用户一些建议。是的,我忘了提到dataadapter和更新功能。-1 AcceptChanges不会更新数据库,只需清除标记为更新的行。顺便说一句。为什么要发布2篇文章?因为我有一个会议,很匆忙,但决定尝试用代码而不是文字给用户提些建议。是的,我忘了提到dataadapter和更新功能。这是很重要的太遗憾了,你在原来的帖子里没有这么说。你会为我们俩节省一些时间。太遗憾了,你在原来的帖子里没有这么说。你会为我们俩节省一些时间。