自己对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);
posted @ 2006-08-08 16:31  吴东雷  阅读(206)  评论(0编辑  收藏  举报