我在Oracle中有这样一条记录,它有一百多个字段,而现在我要把所有的字段都更新,如果写SQL语句的话很麻烦,也很费劲,请问有什么简便的方法没有?如果能在C#中最好不过,谢谢啊

解决方案 »

  1.   

    msdn
    如果 DataTable 映射到单个数据库表或从单个数据库表生成,则可以利用 DbCommandBuilder 对象自动生成 DbDataAdapter 的 DeleteCommand、InsertCommand 和 UpdateCommand。为了自动生成命令,必须设置 SelectCommand 属性,这是最低的要求。SelectCommand 属性所检索的表架构确定自动生成的 INSERT、UPDATE 和 DELETE 语句的语法。为了返回构造 INSERT、UPDATE 和 DELETE SQL 命令所必需的元数据,DbCommandBuilder 必须执行 SelectCommand。因此,必须额外经历一次到数据源的行程,这可能会降低性能。若要实现最佳性能,请显式指定命令而不是使用 DbCommandBuilder。SelectCommand 还必须返回至少一个主键或唯一列。如果不存在任何主键或唯一列,则将生成 InvalidOperation 异常,并且不会生成命令。当与 DataAdapter 关联时,DbCommandBuilder 将自动生成 DataAdapter 的 InsertCommand、UpdateCommand 和 DeleteCommand 属性(如果它们是空引用)。如果已存在用于某属性的 Command,则将使用现有 Command。通过联接两个或更多个表来创建的数据库视图不会被视为单个数据库表。在这种情况下,不能使用 DbCommandBuilder 自动生成命令,必须显式指定命令。有关通过显式设置命令将对 DataSet 的更新解析回数据源的信息,请参见使用 DataAdapter 更新数据源。您可能需要将输出参数映射回 DataSet 的更新行。一项常见的任务是从数据源中检索自动生成的标识字段或时间戳的值。默认情况下,DbCommandBuilder 不会将输出参数映射到更新行中的列。在这种情况下,必须显式指定命令。有关将自动生成的标识字段映射回插入行的列的示例,请参见检索“标识”或“自动编号”值。