首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

21.7.1  用数据适配器来填充 DataSet

前面讨论数据行的一节简要介绍了SqlDataAdapter类,使用该类的代码如下所示:

string select = "SELECT ContactName,CompanyName FROM Customers";

SqlConnection conn = new SqlConnection(source);

SqlDataAdapter da = new SqlDataAdapter(select , conn);

DataSet ds = new DataSet();

da.Fill(ds , "Customers");

突出显示的两行代码显示了SqlDataAdapter—— 其他数据适配器在功能上实际上与SqlDataAdapter是完全相同的。

数据适配器类都派生于同一个基类,而不是一组接口,其他数据库类也是这样。继承结构如下所示:

System.Data.Common.DataAdapter

   System.Data.Common.DbDataAdapter

      System.Data.Odbc.OdbcDataAdapter

      System.Data.OleDb.OleDbDataAdapter

      System.Data.OracleClient.OracleDataAdapter

      System.Data.SqlClient.SqlDataAdapter

为了把数据插入到DataSet中,需要执行某种形式的命令以选择该数据。该命令可以是SQL SELECT语句,一个存储过程的调用,或者是TableDirect命令(用于OleDb提供程序)。上面的示例使用了SqlDataAdapter的一个构造函数,把传送过来的SQL SELECT子句转换为一个SqlCommand,在适配器上调用Fill方法时执行这个命令。

在本章前面的存储过程示例中,定义了INSERTUPDATEDELETE命令,但没有给出一个SELECT过程,本节介绍该过程,并说明如何从SqlDataAdapter上调用存储过程,把数据填充到DataSet中。

在数据适配器上使用存储过程

首先需要定义一个存储过程, SELECT存储过程如下所示:

CREATE PROCEDURE RegionSelect AS

  SET NOCOUNT OFF

  SELECT * FROM Region

GO

这个存储过程可以直接输入到SQL Server查询分析器中或者可以运行这个示例所使用的StoredProc.sql文件。

接着,需要定义一个执行该存储过程的SqlCommand,这段代码非常简单,并且大部分已经在前面“执行命令”的一节中介绍过了:

private static SqlCommand GenerateSelectCommand(SqlConnection conn )

{

   SqlCommand  aCommand = new SqlCommand("RegionSelect" , conn);

   aCommand.CommandType = CommandType.StoredProcedure;

   aCommand.UpdatedRowSource = UpdateRowSource.None;

   return aCommand;

}

这个方法生成了一个SqlCommandSqlCommand在执行时会调用RegionSelect过程。最后是把这个命令和SqlDataAdapter类关联起来调用Fill方法

DataSet ds = new DataSet();

// Create a data adapter to fill the DataSet

SqlDataAdapter da = new SqlDataAdapter();

// Set the data adapter's select command

da.SelectCommand = GenerateSelectCommand (conn);

da.Fill(ds , "Region");

其中创建了一个新SqlDataAdapter把生成的SqlCommand赋给数据适配器的SelectCommand属性然后调用执行存储过程的Fill方法把返回的所有行插入到Region数据表中(在本例中它是由运行库生成的)

数据适配器不仅仅能通过执行命令来选择数据,“保存对数据集的修改”一节会介绍数据适配器的其他功能。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论