科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件ASP.NET 2.0中的数据访问控件简析(2)

ASP.NET 2.0中的数据访问控件简析(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

数据访问一直是开发 Web 应用程序的一个关键问题。现在,大多数复杂的应用程序都可以利用 ASP.NET 2.0 提供的数据访问工具。从体系结构和机制上限制 ASP.NET 1.x 执行的绑定和缓存问题,在 ASP.NET 2.0 中都得以解决了。

作者:msdn 来源:msdn 2007年9月2日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
数据访问 API

第二个体系结构层提供使用提供程序、ADO.NET 和 ASP.NET 控件的通用机制。这个体系结构涉及一些通用任务和过程。然而,从开发人员的视角来看,使用 ASP.NET 2.0 提供的各种数据绑定控件和数据源控件无需编写代码来支持这些过程。

连接和命令

ADO.NET 包含的 .NET Framework 数据提供程序用于连接一个数据库,执行命令和检索结果。在 ADO.NET 中,使用 Connection 对象连接一个指定的数据源。例如,在 SQL Server 2000 中,能够使用 SQLConnection 对象连接一个数据库,如以下代码所示。

[Visual Basic]

Dim nwindConn As SqlConnection = _ New SqlConnection(

"Data Source=localhost;Integrated Security=SSPI;" _ "Initial Catalog=northwind")

nwindConn.Open()

[C#]

SqlConnection nwindConn = new SqlConnection(

"Data Source=localhost; Integrated Security=SSPI;" "Initial Catalog=northwind");

nwindConn.Open();



连接到数据源后,能够使用 Command 对象执行命令和返回结果。Command 对象通过 Command 的构造函数创建,这个构造函数接收一个 SQL 语句或 SQL 查询。一旦创建了 Command,就能使用 CommandText 属性修改 SQL 语句。

Visual Basic] Dim catCMD As SqlCommand = _ New SqlCommand("SELECT CategoryID, CategoryName FROM Categories", nwindConn) [C#] SqlCommand catCMD = new SqlCommand("SELECT CategoryID, CategoryName FROM Categories", nwindConn);

您可将一条命令认为是等同于一个特定的 SQL 调用,该调用绑定到一个特定的数据库。一条命令只能用于 CommandText 字段中定义的特定调用。

Command 对象提供了一些不同的 Execute 方法来启动存储过程,执行查询或者执行非查询语句,例如更新或插入:



1.



ExecuteReader 方法 — 将数据作为一个 DataReader 对象返回。用于任何返回数据的 SQL 查询。



2.



ExecuteScalar 方法 — 返回单独值,例如与特定查询相匹配的记录数,或者数据库功能调用的结果。



3.



ExecuteNonQuery 方法 — 执行不返回任何行的命令。典型的例子是存储过程、插入和更新。



当然,您需要依据初始化 Command 对象时创建的命令来选择正确的 Execute 方法。

ExecuteReader 方法将任何结果都返回到 DataReader 对象。DataReader 对象是查询数据库返回的一个关联的、只进的只读数据流。执行查询时,第一行返回到 DataReader 中。数据流保持到数据库的连接,然后返回下一条记录。DataReader 从数据库中读取行数据时,每行的列值都被读取和计算,但是不能被编辑。

DataAdapter 和 DataSet

虽然连接数据库的应用程序使用 DataReader 就已足够,但是,DataReader 不能很好地支持数据库访问的断开连接模型。而 DataAdapterDataSet 类则满足了这一需求。

DataSet 是 ADO.NET 断开连接体系结构中主要的数据存储工具。填充 DataSet 时,并非通过 Connection 对象将 DataSet 直接连接到数据库。您必须创建一个 DataAdapter 来填充 DataSetDataAdapter 连接数据库,执行查询并填充 DataSet。当 DataAdapter 调用 FillUpdate 方法时,在后台完成所有的数据传输。每个 .NET Framework 的数据提供程序都有一个 DataAdapter 对象。

一个 DataSet 代表一组完整的数据,包括表格、约束条件和表关系。DataSet 能够存储代码创建的本地数据,也能存储来自多个数据源的数据,并断开到数据库的连接。

DataAdapter 能控制与现有数据源的交互。DataAdapter 也能将对 DataSet 的变更传输回数据源中。下列代码说明使用 DataSet 典型情况。

[Visual Basic]

Dim nwindConn As SqlConnection = _ New SqlConnection(

"Data Source=localhost;" & _ "Integrated_Security=SSPI;Initial Catalog=northwind")

Dim selectCMD As SqlCommand = _ New SqlCommand(

"SELECT CustomerID, CompanyName FROM " & _ "Customers", nwindConn)

selectCMD.CommandTimeout = 30

Dim custDA As SqlDataAdapter= New SqlDataAdapter

custDA.SelectCommand= selectCMD

Dim custDS As DataSet= New DataSet

custDA.Fill(custDS, "Customers") nwindConn.Close()

[C#]

SqlConnection nwindConn = new SqlConnection(

"Data Source=localhost;" + "IntegratedSecurity=SSPI;Initial Catalog=northwind");

SqlCommand selectCMD = new SqlCommand(

"SELECT CustomerID, CompanyName FROM Customers", nwindConn);

selectCMD.CommandTimeout = 30;

SqlDataAdaptercustDA = new SqlDataAdapter();

custDA.SelectCommand= selectCMD;

nwindConn.Open();

DataSetcustDS = new DataSet();

custDA.Fill(custDS, "Customers");

nwindConn.Close();

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章