前期在做一个ADO的小项目,需要使用StoreProcedure,发现Parameter有一个SourceColmn属性,估计是智商低下,半天想不明白为什么要设置这个属性,网上搜索了半天也不得其果,最后凭借低智商的超常发挥终于搞明白了。
比如说有一个Datatable已经fill好了
column1name column2name
1 2
现在我修改了这个表,并想使用数据库里面已有的StorePro将修改更新到数据库。
使DATATABLE修改为
column1name column2name
12 35
若直接调用一条StorePro去修改,例如:
update tablename set column1name=@a,colum2name=@b where column1name=@c
为Parameter的Value赋值,则无需指定SourceColumn属性,但是注意,@C变量的SourceVersion属性必须设置,
Parameter.SourceVersion=DataRowVersion.Original
但是如果用DataAdapter去Update这个个DataTable的时候, 如果没有使用SqlCommandBuider将DA传入作为参数的话,就必须显示的声明每一个update,insert,delete的sqlcommand,如果使用储存过程,就必须要指定储存过程名和参数,例如使用的储存过程同上
但是如果用DataAdapter去Update这个个DataTable的时候, 如果没有使用SqlCommandBuider将DA传入作为参数的话,就必须显示的声明每一个update,insert,delete的sqlcommand,如果使用储存过程,就必须要指定储存过程名和参数,例如使用的储存过程同上
update tablename set column1name=@a,colum2name=@b where column1name=@c
指定为DA的updatecommand
当DataAdapter调用UPDATE方法更新DATATABLE时,会自动使用你指定的储存过程
第一行被更新了,但是DA在给@a,@b,@c赋值时,并不知道@a应该赋值时12还是21,这个时候SQLPARAMETER的sourcecolumn属性就起作用了。