2012-07-19 48 views
2

我有一个表有100-200条记录。 我已将这些记录提取到数据集中。在数据库表中使用DataTable更新?

现在我通过所有的记录使用的foreach

dataset.Tables[0].AsEnumerable() 

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

回答

3

我是你的使用数据适配器填充数据集,以选择命令Assumng?

要编辑数据表中的数据并将更改保存回数据库,您需要为您的数据适配器提供更新命令。事情是这样的: -

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; 
    } 

一本完成后,你需要调用YOUT数据的更新()方法像这样适配器: -

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

这里会发生什么事,是数据适配器调用Update命令并保存更改回数据库。

请注意,如果希望向数据库添加新行,则需要使用INSERT命令作为数据适配器。

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

0

像这样:

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; 
+0

我想更新数据库中的更改 – 2012-07-19 13:41:03

+0

这太糟糕了,您没有在原始帖子中说过。你会在一段时间内挽救我们。 – 2012-07-19 17:19:01

0

具体的步骤是这样的: - 创建一个新的DataColumn [^] - 将其添加到数据表中的列[^]收集 - 创建一个DataRow [^例如使用NEWROW [^] - 按使用项目[^]索引 需要修改行的值 - 该行添加到行[^]收集 - 后成功的修改的AcceptChanges [^]

-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();

+0

-1 AcceptChanges不会更新数据库,只是清除标记为更新的行。顺便说一句。为什么2个帖子? – 2012-07-19 14:23:12

+0

因为我有一个会议,并且很匆忙,但决定尝试给用户一些代码建议而不是单词。是的,我忘了提及数据适配器和更新功能。 – cshemby 2012-07-19 14:53:33

3

你应该(在下面的代码adapter),这是用来填充DataSet和调用Update方法使用原装DataAdapter的,你需要CommandBuilder的同时,它取决于你正在使用什么数据库,这里是SQL服务器的示例:

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

这里是很好的例子:

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