使用 SqlDataAdapter.Update 方法时复制表行

Posted

技术标签:

【中文标题】使用 SqlDataAdapter.Update 方法时复制表行【英文标题】:Duplicating table rows when using SqlDataAdapter.Update Method 【发布时间】:2013-11-04 03:08:40 【问题描述】:

在我的项目中,我有表格“产品”。

ID  Name   Price
------------------  
1   xyz     100

2   abc     200

3   pqr     300

在我的 c# 代码中,我想使用 SqlAdapter 更新我的表行。 为此我创建了一个数据表

DataTable dtTable=new DataTable("Product");

将更新后的值添加到 Datatable 中。即,

ID  Name   Price
    ------------------  
    1   aaa     100

    2   bbb     200

    3   ccc     300

我使用以下步骤使用此值更新数据库中的表

SqlConnection myLocalConnection = new SqlConnection(_ConnectionString);
SqlDataAdapter mysqlDataAdapter = new SqlDataAdapter("Select * from " + dtTable.TableName, myLocalConnection);
 SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(mySqlDataAdapter);

     mySqlDataAdapter.Update(dtTable);

但是当执行这个更新函数时,在数据库中所有的表都是重复的。 那就是

ID  Name   Price
------------------  
1   xyz     100

2   abc     200

3   pqr     300

4   aaa     100

5   bbb     200

6   ccc     300

我只想替换现有数据。为什么这些行在此表中重复。 请帮忙

【问题讨论】:

你需要初始化dtTable来获取新值 【参考方案1】:

根据Updating Data Sources with DataAdapters你必须自己指定你的更新命令,然后才能调用sql数据适配器的Update函数!

SqlDataAdapter mySqlDataAdapter = 
     new SqlDataAdapter("Select * from " + dtTable.TableName, myLocalConnection);
dataAdpater.UpdateCommand = new SqlCommand("UPDATE ...", connection);
mySqlDataAdapter.Update(dtTable);

【讨论】:

以上是关于使用 SqlDataAdapter.Update 方法时复制表行的主要内容,如果未能解决你的问题,请参考以下文章

使用 SqlDataAdapter.Update 方法时复制表行

SqlDataAdapter.Update(dataset) 方法插入新行但不更新现有行

SqlDataAdapter.Update(数据表)不工作(不更新数据库)

C# SqlDataAdapter.Update()

在 SqlDataAdapter.Update() 中获取错误消息

200万条记录的SqlDataAdapter.Update()速度极慢