ADO.NET 概述

ADO.NET 是一种应用程序与数据源交互的 API,它支持的数据源包括数据库、文本文件、Excel 表格或者 XML 文件等。ADO.NET 封装在 System.Data 命名空间及其子命名空间(System.Data.SqlClient 和 System.Data.OleDb)中,提供了强大的数据访问和处理功能,包括索引、排序、浏览和更新等。

这里写图片描述

上图显示了 ADO.NET 的构架。ADO.NET 构架的两个主要组件是 DataProvider (数据提供程序)和 DataSet (数据集)。

1. DataProvider

DataProvider 提供了 DataSet 和数据库之间的联系,同时也包含存取数据库的一系列接口。通过数据提供者所提供的 API,可以轻松访问各种数据源的数据。
.NET DataProvider 包括四个核心对象:

  • Connection(连接对象):用于与数据源建立连接;
  • Command (命令对象):用于对数据执行指定命令;
  • DataReader(数据读取对象):用于从数据源返回一个仅向前(forward-only)的只读数据源;
  • DataAdapter(数据适配器对象):自动将数据的各种操作做变换到数据源相应的SQL语句。

1.1 Connection 对象

在 ADO.NET 中,Connection (连接对象)用于连接数据库,是应用程序访问和使用数据源数据的桥梁。下面列出了 Connection 的部分常用成员:

  • ConnectionString:连接字符串。
  • Open():打开数据库连接。
  • Close():关闭数据库连接。

使用 Connection 对象连接数据库的一般步骤:

1.定义字符串
连接字符串用来描述数据源的连接方式,不同的数据源使用不同的连接字符串。以 SQL Server 为例,它既支持 SQL Server 身份验证连接方式,也支持 Windows 集成身份验证的连接方式。
其中, SQL Server 身份验证方式的连接字符串的一般格式如下:

string connString = "Data Source = 服务器名;Initial Catalog = 数据库名;User ID = 用户名;Pwd = 密码";

Windows 身份验证的连接字符串的一般格式如下:

string connString = "Data Source = 服务器名;Initial Catalog = 数据库名;Integrated Security = True";

其中,“服务器名”是数据库的服务器名称或 IP 地址。当应用程序和 SQL Server 服务器在同一台计算机上运行时, SQL Server 服务器名是本地服务器,其服务器名可以有以下几种写法:.(圆点)、local、127.0.0.1、本地服务器名称

2.创建 Connection 对象

SqlConnection conn = new SqlConnection(connString);

3.打开与数据库的连接

conn.Open();

4.使用该连接进行数据访问

5.关闭与数据库的连接

conn.Close();

【注意】:不同数据提供者的连接对象及其命令空间是不相同的。以下列出了不同命名空间的 Connection 对象:

  1. System.Data.SqlClient 对应 SqlConnection。
  2. System.Data.OleDb 对应 OleDbConnection。
  3. System.Data.Odbc 对应 OdbcConnection。
  4. System.Data.OracleClient 对应 OracleClientConnection。

1.2 Command 对象

Command(命令对象)用于封装和执行 SQL 命令并从数据源中返回结果,命令对象的 CommandText 属性用来保存最终由数据库管理系统执行的 SQL 语句。注意,不同的数据源需要使用不同的命令对象。下面列出了 Command 的主要成员:

  1. Connection:Connection 对象使用的数据库连接。
  2. CommandText:执行的 SQL 语句。
  3. ExecuteNonQuery():执行不返回行的语句,如 Updata 等,执行后返回受影响的行数。
  4. ExecuteReader():返回 DataReader 对象。
  5. ExecuteScalar():执行查询,并返回查询结果集中的第一行的第一列。

虽然不同数据源的命令对象的名字不同略有不同,但使用方法是相同的,通常按以下步骤访问数据库源:

1.创建数据库连接。
2.定义 SQL 语句。
3.创建 Command 对象,一般形式如下:

SqlCommand comm = new SqlCommand( SQL语句, 数据库连接对象);

也可采用以下形式创建 Command 对象。

SqlCommand comm = new SqlCommand();
comm.Connection = 数据库连接对象;
comm.CommandText = "SQL语句";

4.执行命令。

【注意】:在执行命令前,必须打开数据库连接,执行命令后,应该关闭数据库连接。

1.3 DataReader 对象

DataReader(数据读取对象)提供一种从数据库只向前读取行的方式。下面列出 DataReader 的主要成员:

  1. HasRows :DataReader 中是否包含一行或多行。
  2. Read():前进到下一行记录,如果下一行有记录,则读出该行并返回 true;否则返回 false。
  3. Close():关闭 DataReader 对象。

使用 DataReader 检索数据的步骤如下:
(1)创建 Command 对象。
(2)调用 Command 对象的 ExecuteReader()方法创建 DataReader 对象。

SqlDataReader dr = Command对象.ExecuteReader();

【注意】:DataReader 类在 .NET Framework 中被定义为抽象类,因此不能直接实例化,只能使用 Command 对象的 ExecuteReader() 方法来创建 DataReader 对象。
(3)调用 DataReader 对象的 Read()方法逐行读取数据。

while(dr.Read())
{
    // 读取某列数据
}

(4)读取某列的数据。
获取某列的值,可以指定列的索引,从0开始,也可以指定列名,一般形式如下:

(数据类型)dr[索引或列名]

【注意】:在执行程序时,DataReader 对象的 Read 方法会自动把所读取的一行数据的各列的值通过装箱操作保存到 DataReader 内部的集合中,因此要想获得某一列的值,就必须进行拆箱操作,即强制类型转换。
(5)关闭 DataReader 对象。

dr.Close();

2. DataSet

ADO.NET 的核心是 DataSet(数据集)。DataSet可简单的理解成内存中的数据库,是一种“临时的数据库“,只是临时保存从数据源中读出来的数据记录;也是一种”独立的数据库“,它的数据虽然来自数据源,但它一旦生成,应用程序与数据源就断开了数据连接。

3. ADO.NET 访问数据库的一般步骤

这里写图片描述

  • Step1:使用 using 添加 System.Data 及其相关子命名空间的引用(如要想访问 SQL Server 数据库就必须引用 System.Data.SqlCient)。
  • Step2:使用 Connection 对象连接数据源。
  • Step3:视情况使用 Command 对象、DataReader 对象或 DataAdpter对象操作数据库。
  • Step4:将操作结果返回到应用程序中,进行进一步处理。

参考资源:《C# 程序设计经典教程(第二版)》罗福强 杨剑 张敏辉主编 清华大学出版社

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2015-09-18 22:02  贱贱的梦想  阅读(538)  评论(0编辑  收藏  举报