SqlCommandBuilder
自动生成单表命令,用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调。无法继
承此类。
构造函数
SqlCommandBuilder ()
初始化 SqlCommandBuilder 类的新实例
SqlCommandBuilder (SqlDataAdapter)
使用关联的 SqlDataAdapter 对象初始化 SqlCommandBuilder 类的新实例
(SqlCommandBuilder 将自身注册为 RowUpdating 事件的侦听器,这些事件由此属性中指定的 SqlDataAdapter 生成。
SqlDataAdapter.RowUpdating 事件
在对数据源执行命令前的 Update 过程中发生。试图进行更新,因此激发了该事件。
当应用程序调用 Update 方法时,DbDataAdapter 根据 DataSet 中配置的索引顺序为每一行检查 RowState 属性,并迭代执行所需的 INSERT、UPDATE 或 DELETE 语句。例如,由于 DataTable 中行的排序,Update 可能先执行一个 DELETE 语句,接着执行一个 INSERT 语句,然后再执行另一个 DELETE 语句。
应注意,这些语句不是作为批处理进程执行的;每一行都是单独更新的。在必须控制语句类型顺序的情况下(例如,INSERT 在 UPDATE 之前),应用程序可以调用 GetChanges 方法。有关更多信息,请参见 使用 DataAdapter 更新数据源。
如果未指定 INSERT、UPDATE 或 DELETE 语句,Update 方法会生成异常。但是,如果设置 .NET Framework 数据提供程序的 SelectCommand 属性,则可以创建 SqlCommandBuilder 或 OleDbCommandBuilder 对象来为单个表更新自动生成 SQL 语句。然后,CommandBuilder 将生成任何其他未设置的 SQL 语句。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息,请参见 自动生成命令。
)------因此对于单表而言 使用设置了selectCommand属性的DataAdapter.updata()更新方法时。则可以创建 SqlCommandBuilder 或 OleDbCommandBuilder 对象来为单个表更新自动生成 SQL 语句。然后,CommandBuilder 将生成任何其他未设置的 SQL 语句。此生成逻辑要求 DataSet 中存在键列(需要包含主键)信息