2024年3月9日发(作者:)

一. 用(DataSet Ds)更新数据库.

1. DbDataAdapter调用 Update 方法时,DataAdapter 将分析已作出的更改并执

行相应的命令(INSERT、

UPDATE 或 DELETE)。当 DataAdapter 遇到对 DataRow 的更改时,它将使用

InsertCommand、

UpdateCommand 或 DeleteCommand 来处理该更改。这样,您就可以通过在设

计时指定命令语法并在可能时通

过使用存储过程来尽量提高 应用程序的性能。在调用 Update 之前,必

须显式设置这些命令。如果

调用了 Update 但不存在用于特定更新的相应命令(例如,不存在用于已删除行的

DeleteCommand),则将引

发异常。

但是如果 DataTable 映射到单个数据库表或从单个数据库表生成,则可以利用

CommandBuilder 对象自

动生成 DataAdapter 的 DeleteCommand、InsertCommand 和

UpdateCommand。为了自动生成命令,必须设置

SelectCommand 属性,这是最低的要求。SelectCommand 所检索的表架构 确定

自动生成的 INSERT、UPDATE

和 DELETE 语句的语法。如果在自动生成插入、更新或删除命令后修改

SelectCommand 的 CommandText,则

可能会发生异常。如果已修改的 dText 所包含的架构信

息与自动生成插入、更新或删

除命令时所使用的 dText 不一致,则以后对

方法的调用可能会

试图访问 SelectCommand 引用的当前表中已不存在的列,并且会引发异常。可以

通过调用 CommandBuilder

的 RefreshSchema 方法来刷新 CommandBuilder 用来自动生成命令的架构信息。

对于 方法更新数据库,每次在调用

(ds) 之后一定要

changes

否则会对后面用到的ds出现意想不到的错误。

郁闷~ 改了一天的程序,才发现是这个错误,太郁闷了~~

2. SqlCommandBuilder会自动生成更新、修改、删除的sql语句,进行更新。