使用 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(数据表)不工作(不更新数据库)