利用SqlDataAdapter复制数据行

本文介绍了一种利用SqlCommandBuilder简化数据行复制的方法,通过示例代码详细展示了如何在拥有大量字段的表中快速复制数据行,并更新部分字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中需要实现一个数据行的复制功能,也就是有些数据信息,大部分内容都是一样的,只有少数几个参数不同,实现这个功能以简化用户的输入。

 

按理说,这种功能实现起来非常简单,但是这里有个问题,表的字段非常多,超过100,以前,都是习惯于手写SQL,这时麻烦就来了,SQL还真长,虽然可以利用工具生成,但参数的设置还得手工调整,总之字段太多,看着头就晕。

 

这时,我想到了SqlCommandBuilder。“SqlDataAdapter不会自动实现生成DataSet的更改与关联的SQL Server实例之间的协调所需的SQL语句。但是,如果设置了SqlDataAdapter的SelectCommand属性,则可以创建一个SqlCommandBuilder对象来自动生成用于单表更新的T-SQL语句。”

 

根据MSDN的示例,我得到下面的一段代码:

 

 

在注释“1”处,创建了一个SqlCommandBuilder对象。

 

在注释“2”处,利用ImportRow方法,在DataSet中导入一条新记录,然后需要做一下AcceptChanges(),接收这个变化。

 

在注释“3”处,对新添加的这条记录应用SetAdded()方法,改变其状态为Added,这时就可以根据需要改变某字段的值了。

 

最后利用SqlDataAdapter的Update方法,就能将数据更新到数据库了。

 

--------------------------------------------------------------

【附】DataRowState枚举成员

 

 Added 

该行已添加到 DataRowCollection 中,AcceptChanges 尚未调用。 


Deleted 

该行已通过 DataRow 的 Delete 方法被删除。

Detached 

该行已被创建,但不属于任何 DataRowCollection。DataRow 在以下情况下立即处于此状态:创建之后添加到集合中之前;或从集合中移除之后。 


Modified 

该行已被修改,AcceptChanges 尚未调用。 


Unchanged 该行自上次调用 AcceptChanges 以来尚未更改。

 

******

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客行天下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值