DataAdapter类对象

      My Works 2007-1-4 12:27
前言:DataAdapter 连接到数据库以填充 DataSet 的对象。然后,它又连接回数据库,根据 DataSet 保留数据时所执行的操作来更新数据库中的该数据。DataAdapter,它起着桥梁的作用,在 DataSet 和其源数据存储区之间进行数据检索和保存。这一操作是通过请求对数据存储区进行适当的 SQL 命令来完成的。
DataAdapter (OLEDB/SQL)
  DataAdapter 对象在 DataSet 与源数据之间起到桥梁的作用。在使用 Microsoft SQL Server 数据库时,使用提供程序特定的 SqlDataAdapter(以及与其关联的 SqlCommandSqlConnection)能够提高整体性能。对于其他支持 OLE DB 的数据库,将使用 OleDbDataAdapter 对象及其关联 OleDbCommandOleDbConnection 对象。
  在更改 DataSet 之后,DataAdapter 对象使用命令来更新数据源。使用 DataAdapterFill 方法调用 SELECT 命令;使用 Update 方法为每一发生更改的行调用 INSERT、UPDATE 或 DELETE 命令。
  比如:要将某个表(TableName)中的行填充到DataSet对象,可以使用DataAdapter的Fill()方法。
Fill()方法返回的int是DataSet与数据库之间通过DataAdapter被同步的行数。
Fill()方法的第一个参数是DataSet对象实例,第二个参数是一个字符串,包含要赋给DataSet中生成的DataTable的名称。
 
  我们已经知道了如何定义、打开和关闭数据库连接,下面我们将通过读取和写入数据库来使用数据。
  数据库交互最终是通过Command 对象来完成的,尽管这些对象可能隐藏在其他更为抽象的对象后面。Command 对象包含有关如何读取或更新数据库中的数据的指令。这些指令可能是动态 SQL 语句,也可能是调用存储过程所需的信息。
  读取数据通常有两种方法其一是DataSet 对象,它提供一个我们可以使用的、抽象的、断开连接的数据副本。DataSet 由DataAdapter 对象填充,DataAdapter 对象又与基础 Command 和 Connection 对象进行交互。
  DataAdapter 使用一个名为 DataReader 的对象从数据库中实际获取数据。然后,这些数据将被用来填充 DataSet 对象。
  第二种读取数据的方法是直接使用DataReader从而绕过整个 DataSet 和 DataAdapter 技术。这种方法在创建 Web 页或 XML Web Services 时尤为有用,因为我们通常只是从数据库中提取数据,然后简单地将其复制到页面或 XML 输出结果中。将数据复制到 DataSet,然后再将其复制到页面或 XML 结果需要花费额外的时间。
  DataSet 和DataAdapter 对象还提供了更新数据的机制。DataAdapter 不仅包含检索数据的Command 对象,还包含插入、更新和删除数据的 Command 对象。您只需将已更改的DataSet 对象传递到DataAdapter,后者将自动调用相应的Command 对象将更改更新到数据库中。
使用 DataSet 读取和更新数据
  DataSet 是保存在内存中供您使用的断开连接的数据副本。要从数据提供程序中填充DataSet,我们需要使用 DataAdapter 对象,该对象将使用Command 对象生成 DataReader,然后可以从 DataReader 中将数据读入DataSet。
手动读取和更新数据
  尽管 DataSet 和 DataAdapter 非常简单,也非常好用,但它们并非在任何时候都是最佳选择。有时候,我们需要快速读取数据,并且不需要在内存中存储数据副本。还有些时候,我们要更新到数据库中的数据可能不是来自 DataSet,或者在将数据更新到数据库之前,不适于使用 DataSet 将数据放在内存中。
  读取数据时,我们可能只需找到数据并将其发送到其他位置,例如 Web 页、XML 文档或文本文件。在这些情况下,直接使用 DataReader 对象会更有效。
  使用 DataReader 非常直截了当。Command 对象上的 ExecuteReader 方法使 Command 可以对数据库直接运行,并返回一个 DataReader 对象作为结果。
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}