我们都知道SqlDataAdapter调用Update方法更新数据库时,会自动调用UpdateCommand,但是这个UpdateCommand是带参数的;假如用SqlDataAdapter填充一个表,更改这表的值,更改的值是如何传递给UpdateCommand的参数的???因为我并没有发现它们用UpdateCommand.Parameters.Value来对它的参数进行赋值,这样的话,值是怎么传进去的????

解决方案 »

  1.   

    UpdateCommand.Parameters.Add("参数名",SqlDBType.参数类型).Value=参数值
      

  2.   

    当应用程序调用 Update 方法时,DbDataAdapter 根据 DataSet 中配置的索引顺序为每一行检查 RowState 属性,并迭代执行所需的 INSERT、UPDATE 或 DELETE 语句。例如,由于 DataTable 中行的排序,Update 可能先执行一个 DELETE 语句,接着执行一个 INSERT 语句,然后再执行另一个 DELETE 语句。应注意,这些语句不是作为批处理进程执行的;每一行都是单独更新的。在必须控制语句类型顺序的情况下(例如,INSERT 在 UPDATE 之前),应用程序可以调用 GetChanges 方法。有关更多信息,请参见使用 DataAdapter 更新数据源 (ADO.NET)。
      

  3.   

    检查 RowState 属性来检查是否有行的添加,更改和删除
      

  4.   

    实参传递时,是如何与UpdateCommand中形参进行一一对应的?是不是表与UpdateCommand中的参数之间存在某种映射关系??
      

  5.   

    String sql="select * form users where userid=@userid or email=@email";
    ...
    ...
    UpdateCommand.Parameters.Add("@userid",SqlDBType.Int).Value=1;
    UpdateCommand.Parameters.Add("@email",SqlDBType.Varchar).Value="[email protected]";
      

  6.   

    直接丢datatable给dataadapter去更新好了,费其他的事干吗?
    dataadapter.Update(datatable);
      

  7.   

    UpdateCommand.Parameters.Add()  很多重载!我是小菜鸟!   说的不好清见谅,   希望能够帮到你!
      

  8.   

    UpdateCommand.Parameters.Add("@P1" , SqlDbType.Int , 0 , "Column1");
    通过这种方式,参数与表列之间建立了映射关系,更新时就不用一个个赋值了
      

  9.   

    UpdateCommand.Parameters.Add("@P1" , SqlDbType.Int , 0 , "Column1");