c#

位置:IT落伍者 >> c# >> 浏览文章

C#高级编程:用数据适配器来填充 DataSet


发布日期:2022年09月18日
 
C#高级编程:用数据适配器来填充 DataSet
——此文章摘自《C#高级编程(第版)》定价元 特价元 购买

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

string select = SELECT ContactNameCompanyName FROM Customers;

SqlConnection conn = new SqlConnection(source);

SqlDataAdapter da = new SqlDataAdapter(select conn);

DataSet ds = new DataSet();

daFill(ds Customers);

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

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

SystemDataCommonDataAdapter

SystemDataCommonDbDataAdapter

SystemDataOdbcOdbcDataAdapter

SystemDataOleDbOleDbDataAdapter

SystemDataOracleClientOracleDataAdapter

SystemDataSqlClientSqlDataAdapter

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

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

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

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

CREATE PROCEDURE RegionSelect AS

SET NOCOUNT OFF

SELECT * FROM Region

GO

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

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

private static SqlCommand GenerateSelectCommand(SqlConnection conn )

{

SqlCommand aCommand = new SqlCommand(RegionSelect conn);

aCommandCommandType = CommandTypeStoredProcedure;

aCommandUpdatedRowSource = UpdateRowSourceNone;

return aCommand;

}

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

DataSet ds = new DataSet();

// Create a data adapter to fill the DataSet

SqlDataAdapter da = new SqlDataAdapter();

// Set the data adapters select command

daSelectCommand = GenerateSelectCommand (conn);

daFill(ds Region);

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

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

上一篇:.Net技术开发中两个“属性”引起的歧异

下一篇:ADO.NET中的SQL连接方法代码