自己对DataAdapter关新数据过程释疑!

 使用CommandBuilder生成的Insert,Update,Delete只能针对一个表,如果当前的DataSet的DataTAble中是多个表或者有计算列的话就不能用ComandBuilder来做.
以前一直困惑.Net的批量数据更新到底应该采取什么方式,原来自己犯了一个最低级的错误,可以自己写Insert和Update及Delete的语句,其中语句中当然会只有对一个表的操作,值部分用"@Parameter"来参数化的填充,然后在各个Command的Parameters里增加参数化,以前一直以为要像ADO中只能增加一个具体值的参数,原来ADO.Net的方式是可以指定" 源列",这样在调用具体的参数化方法是ADO.Net就自动去当前数据集中取当前要处理的DataRow的相应列的值了.

调用存储过程采用同样的方式.

用参数名、SqlDbType、大小及源列名初始化 SqlParameter 类的新实例。

public SqlParameter(
string parameterName,
SqlDbType dbType,
int size,
string sourceColumn
);
参数
parameterName
要映射的参数的名称。
dbType
SqlDbType 值之一。
size
参数的长度。
sourceColumn
源列的名称。

例如:
Da.SelectCommand为:select table1.id,table1.name,table2.address from table1,table2  where table1.id=table2.id
Da.InsertCommand=New SqlCommand("Insert into test(id,name) values(@id,@name)");
Da.InsertCommand.Parameters.Add("@id",SqlDbType.NVarchar,4,"ID");
Da.InsertCommand.Parameters.Add("@id",SqlDbType.NVarchar,10,"Name");
Da.Update(ds);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值