ado.net技术总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tiana0/article/details/53466017

1、ado.net技术概述
ado.net是一组允许.net开发人员使用标准的,结构化的,甚至无连接的方式与数据交互的技术。使用ado.net技术可以使用一致的访问方式操作多种数据源,包括数据库、xml、excel等。ado.net与ado是两种截然不同的数据访问技术,ado使用ole db接口基于微软com技术,而ado.net拥有自己的ado.net接口并且基于微软的.net技术。ado.net包含两组重要的类:DataSet类提供独立于任何数据源的数据访问,由一些DataTable的集合组成;DataProvider作为数据提供程序,负责与外部数据源的通信,具体操作包括连接数据库、执行命令和检索结果。.net在ado.net的基础上还提供了ef、linq等技术来简化数据的访问。
这里写图片描述

2、.net数据提供程序
.net数据提供程序的核心组件包括Connection对象、Command对象、DataReader对象、DataAdapter对象、Parameter对象、ConnectionStringBuilder对象和CommandBuilder对象等。

  • Connection对象负责与数据源的连接。
  • Command对象负责执行sql查询。
  • DataReader对象负责只读的数据查询。
  • DataAdapter对象是DataSet和数据源之间的桥梁,DataAdapter利用Command执行sql查询,将数据加载进DataSet,同时确保DataSet的数据变更与数据源保持一致。
  • Parameter对象定义了命令和存储过程的输入、输出和返回参数。
  • ConnectionStringBuilder对象用于创建和管理由Connection对象使用的连接字符串的内容。
  • CommandBuilder对象自动生成DataAdapter对象的命令属性InsertCommand、UpdateCommand 和
    DeleteCommand。

不同的数据源使用不同的.net数据提供程序。

(1)用于 SQL Server 的数据提供程序,提供对 Microsoft SQL Server 7.0 或更高版本中数据的访问。使用 System.Data.SqlClient 命名空间。用于 SQL Server 的数据提供程序使用自己的协议与 SQL Server 进行通信。它轻量且性能良好。支持本地事务和分布式事务。
(2)用于 OLE DB 的数据提供程序,提供对使用 OLE DB 公开的数据源中数据的访问。使用 System.Data.OleDb 命名空间。用于 OLE DB 的数据提供程序通过 COM 互操作使用本机 OLE DB 来启用数据访问。支持本地事务和分布式事务。 如Microsoft Access数据库。
(3)用于 ODBC 的数据提供程序,提供对使用 ODBC 公开的数据源中数据的访问。使用 System.Data.Odbc 命名空间。用于 ODBC 的数据提供程序使用本机 ODBC 驱动程序管理器 (DM) 来启用数据访问。 支持本地事务和分布式事务。
(4)用于 Oracle 的数据提供程序,适用于 Oracle 数据源。用于 Oracle 的 .NET Framework 数据提供程序支持 Oracle 客户端软件 8.1.7 和更高版本,并使用 System.Data.OracleClient 命名空间。通过 Oracle 客户端连接软件启用对 Oracle 数据源的数据访问。 该数据提供程序支持 Oracle 客户端软件 8.1.7 版或更高版本。 该数据提供程序支持本地事务和分布式事务两者。
(5)EntityClient 提供程序,提供对实体数据模型 (EDM) 应用程序的数据访问。使用 System.Data.EntityClient 命名空间。

3、连接字符串
ado.net使用连接字符串来连接数据库,连接字符串需要提供数据源在哪里,使用什么样的数据格式,使用什么样的访问信任级别等连接信息。
(1)Sql Server的连接字符串

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
或者
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;//不可信连接
或者
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;//可信连接
或者
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;//可信连接

(2)Access连接字符串

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=;

(3)MySql连接字符串

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

(4)DB2连接字符串

Server=myAddress:myPortNumber;Database=myDataBase;UID=myUsername;PWD=myPassword;

(5)Oracle连接字符串

Data Source=TORCL;User Id=myUsername;Password=myPassword;

连接字符串可以写死在代码中,也可以配置在配置文件中,也可以使用DbConnectionStringBuilder来构造。

SqlClient.SqlConnectionStringBuilder builder = new SqlClient.SqlConnectionStringBuilder();
builder.DataSource = @"(local)\SQLEXPRESS";
builder.InitialCatalog = "myDataBase";
builder.IntegratedSecurity = true;

4、Connection对象
(1)概述
Connection对象使用连接字符串访问数据源。不同的数据源有不同的连接对象。SqlConnection用于SQL Server的连接对象;OleDbConnection用于OleDb数据源的连接对象;OdbcConnection是用于ODBC数据源的连接对象;OracleConnection是用于Oracle数据库的连接对象。所有连接对象均继承自抽象类DbConnection。DbConnection类继承Compoent类,实现IDbConnection,IDisposable接口,该类封装了连接数据库的很多重要的方法和属性。
(2)Connection对象提供的方法

  • Open()方法用于打开数据库连接。
  • Close()方法用于关闭数据库连接或者释放连接到连接池,还会回滚事务操作。
  • Dispose()释放连接使用的资源。

(3)Connection对象提供的属性

  • Database:获取数据库的名称。
  • DataSource:获取数据库服务器的名称。
  • ConnectionTimeOut:获取数据库的连接超时。
  • ConnectionString:获取或设置用于打开连接的字符串。
  • State:获取连接状态。State是一个枚举对象,具有Closed(连接处于关闭状态)、Open(连接处于打开状态)、Connecting(连接对象正在与数据源连接)、Executing(连接对象正在执行命令)、Fetching(连接对象正在检索数据)、Broken(与数据源的连接中断)。

5、数据库连接池
创建数据库连接对象时可以指定是否使用数据库连接池,同时指定数据库连接池的最小和最大连接数。数据库连接池负责创建空闲的连接、移除无效的连接以及回收使用完的连接。使用数据库连接池可以避免重复创建及关闭数据库连接操作,提高数据库连接的使用效率,提高数据库操作的性能。连接使用完需要调用Connection对象的Close()或Dispose()方法将连接释放进连接池。

SqlConnectionStringBuilder connStr = new SqlConnectionStringBuilder();
connStr.DataSource = @".\SQLEXPRESS";
connStr.InitialCatalog = "master";
connStr.IntegratedSecurity = true;
connStr.Pooling = true; //开启连接池
connStr.MinPoolSize = 0; //设置最小连接数为0
connStr.MaxPoolSize = 50; //设置最大连接数为50             
connStr.ConnectTimeout = 10; //设置超时时间为10秒
using( SqlConnection conn = new SqlConnection(connStr.ConnectionString))
{
;//todo
}

6、Command对象
(1)概述
Command对象封装了所有对外部数据源的操作(增、删、改、查及存储过程),并在执行完成后返回合适的结果。对于不同的数据源使用不同的Command对象。OleDbCommand对象用于 OLE DB 的数据源; SqlCommand对象用于 SQL Server数据库;OdbcCommand 对象用于 ODBC 的数据源;OracleCommand 对象用于Oracle数据库。所有对象均继承自抽象类DBCommand,DBCommand类继承Component类,实现IDbCommand, IDisposable接口。
(2)Command对象提供的方法

  • ExecuteNonQuery()方法执行不返回数据行的操作,返回一个int型数据。
  • ExecuteReader()方法执行查询返回DataReader对象。
  • ExecuteScalar()方法执行查询返回结果集中的第一行第一列数据。

Command对象提供了对应的异步方法,如ExecuteNonQuery()方法对应的异步方法是BeginExecuteNonQuery()和EndExcuteNonQuery()。
(3)Command对象提供的属性

  • CommandText属性:获取或设置需要执行的文本命令。
  • CommandType属性:设置命令类型,为一个枚举值,可以设置为:Text(SQL文本命令)、StoredProcedure(存储过程)、 TableDirect(表的名称)。
  • Connection属性:获取或设置数据库连接。 Parameters属性:绑定SQL语句或存储过程的参数。
  • Tranaction属性:获取或设置事务对象。

7、Parameter对象
(1)概述
Parameter对象定义了命令和存储过程的输入、输出和返回参数。对于不同的数据源来说,Parameter对象不同。SQLServer 数据源使用SqlParamter对象;Ole DB 数据源使用OleDbParameter对象;ODBC 数据源使用OdbcParamter对象;Oracle数据源使用OracleParameter对象。它们均继承自DbParameter对象。
(2)Parameter对象提供的属性

  • DbType属性: 获取或设置参数的数据类型。
  • Direction属性:获取或设置一个值,该值指示参数是否只可输入、只可输出、双向还是存储过程返回值参数。
  • IsNullable属性:获取或设置一个值,该值指示参数是否可以为空。
  • ParamteterName属性: 获取或设置DbParamter的名称。
  • Size属性:获取或设置列中数据的最大大小。
  • Value属性: 获取或设置该参数的值。

8、DataAdapter对象
(1)概述
DataAdapter对象是外部数据源与本地DataSet之间的桥梁,将从外部数据源检索到的数据合理正确的调配到本地的DataSet中,同时将本地DataSet的数据更新同步到数据库,并执行更新命令。
(2)DataAdapter对象提供的属性

  • SelectComand属性:获取或设置用于在数据源选择记录的命令。
  • UpdateCommand属性:获取或这只用于更新数据源中的记录的命令。
  • DeleteCommand属性:获取或设置用于从数据源中删除记录的命令。
  • InsertCommand属性:获取或设置用于将新记录插入数据源中的命令。

(3)DataAdapter对象提供的方法

  • Fill()方法:填充数据集。
  • Update()方法:更新数据源。

猜你喜欢

转载自blog.csdn.net/tiana0/article/details/53466017