C#中 ADO.NET组成与结构

概述

ADO.NET 是 .NET 平台提供访问数据源的组件。用于.NET 应用程序访问关系型和非关系型的数据库。通过使用 ADO.NET 能够方便操作数据库,如查询、新增、更新和删除等操作。

组成

ADO.NET 包含五个主要组件,分别是数据库连接、数据库的命令、数据库的读取器、数据集、数据库的适配器。

ADO.NET 结构图

1、.NET 的数据提供程序:访问数据库。常见的数据提供程序如下表

数据提供程序 描述
System.Data.SqlClient SQL Server 的 .NET 数据提供程序
System.Data.OracleClient Oracle 的 .NET 数据提供程序
System.Data.OleDB OLE DB 的 .NET 数据提供程序
System.Data.Odbc ODBC 的 .NET 数据提供程序
MySql.Data.MySqlClient MySql 的 .NET 数据提供程序

2、数据库连接(Connection):建立与数据源的连接,Connection 基于 DbConnection 类。

// OleDbSystem.Data.OleDb.OleDbConnection// SQL ServerSystem.Data.SqlClient.SqlConnection// OdbcSystem.Data.Odbc.Odbc.Connection// OracleSystem.Data.OracleClient.OracleConnection
2.1、属性
属性 描述
ConnectionString 用于打开数据库的字符串。
ConnectionTimeout 等待连接打开数据库所需的时间, 默认为15 秒。
Database 当前数据库名称或连接打开后要使用的数据库的名称。
State 连接到当前状态。
2.2、方法
方法 描述
Open 打开数据库连接
Close 关闭数据库连接
CreateCommand 创建并返回一个与连接关联数据库的命令(Command)。
BeginTransaction 开启事务
2.3、示例
// SQL验证登录:Server=服务器名称;user=登录SQL的用户名;pwd=登录SQL的用户名的密码;database=数据库名称; string dbConnectionString = "server=127.0.0.1,1433;Enlist=true;Pooling=true; uid=sa;pwd=pwd123456;connection Timeout=30;database=Hrms;Max Pool Size=600";// 创建一个SqlConnection对象SqlConnection sqlConnection = new SqlConnection(dbConnectionString);// 打开数据库sqlConnection.Open();
3、数据库的命令(Command):对数据库执行命令的基本方法。Command 对象继承于 DbCommand 类。
3.1、属性
属性 描述
Connection Connection对象。
ConnectionType 执行数据库命令的类型,如Text、StoredProcedure。
CommandText 执行数据库命令语句。
Parameters 执行数据库命令参数。
3.2、方法
方法 描述
ExecuteReader 执行命令返回 DataReader
ExecuteNonQuery 执行命令返回的记录行数。
ExecuteScale 执行命令返回结果集中的第一行的第一例。
3.3、示例
// 创建一个 SqlCommand 对象SqlCommand sqlCommand = sqlConnection.CreateCommand();// 命令的类型为TextsqlCommand.CommandType = System.Data.CommandType.Text;// 执行命令SQL语句sqlCommand.CommandText = "select * from user";// 执行命令返回 DataReaderSqlDataReader sqlDataReader = sqlCommand.ExecuteReader();

4、数据库的读取器(DataReader):以只读、向前的方式查看数据库表中的数据,读取或操作时,必须保持与数据库的连接。

4.1、属性
属性 描述
FieldCount 用来获取当前行中的列数。
HasRows 获取DataReader对象中是否包含行。
4.2、方法
方法 描述
Read 将Reader记录指针移到下一行。
GetValue 获取当前行指定列的值。
Close 关闭DataReader对象。
NextResult 让记录指针指向下一个结果集。
GetValues 获取当前行的数据保存到一个数组里。
GetDataTypeName 以列索引获得列的类型。
GetName 以列索引获得列的名称。
4.3、示例
// 执行命令返回 DataReaderSqlDataReader sqlDataReader = sqlCommand.ExecuteReader();// 输出标题Console.WriteLine($"|{"编号",-20}|{"名称",20}|");while (sqlDataReader.Read()){// 输出行结果    Console.WriteLine($"|{sqlDataReader["userCode"],-20}|{sqlDataReader["userName"],20}|");}

5、数据库的适配器(DataAdapter):用于填充数据集和更新数据库数据。

5.1、属性
属性 描述
SelectCommand 用于在数据源选择记录的命令。
UpdateCommand 用于更新数据源中的记录的命令。
InsertCommand 用于将新记录插入数据源中的命令。
DeleteCommand 用于从数据源中删除记录的命令。
5.2、方法
方法 描述
Fill 用于命令执行结果填充数据集。
Update 更新数据源。
5.3、示例
// 创建一个 适配器 对象using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from user", sqlConnection)){// 创建一个 数据集 对象    DataSet dataSet = new DataSet();// 查询结果填充数据集    sqlDataAdapter.Fill(dataSet);    DataTable userTable= dataSet.Tables[0];}

6、数据集(DataSet):将从数据库中查询的数据结果缓存到内存中,可对其数据进行管理。

6.1、属性
属性 描述
Tables 数据集的表集合。
Relations 链接父表与子表的关系集合。
Prefix 以数据集命名空间的别名的 XML 前缀。
6.2、方法
方法 描述
AcceptChanges 提交数据集发生改变的数据。
Clear 移除所有表中的所有行来清除任何数据的 DataSet。
Clone 复制 DataSet 的结构,但不复制数据。
Copy 复制该 DataSet 的结构和数据。
CreateDataReader 为每个 DataTableReader 返回带有一个结果集的 DataTable。
GetChanges 获取数据集所有更改过的数据。
HasChanges 获取数据集是否有变改,包括新增行、已删除的行或已修改的行。
6.3、示例
// 创建一个 适配器 对象using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from user", sqlConnection)){// 创建一个 数据集 对象    DataSet dataSet = new DataSet();// 查询结果填充数据集    sqlDataAdapter.Fill(dataSet);    DataTable userTable= dataSet.Tables[0];}

小结

以上是 ADO.NET 简单介绍,包结构、组成、组成对象的属性与方法以及简单示,后续将根据不同的数据提供程序进行细化。如有不到之处,请多多包涵。
.NET技术 · 目录
上一篇C#使用NPOI操作Excel文件

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/79047.html

(0)
guozi的头像guozi
上一篇 2024年5月30日
下一篇 2024年5月30日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注