ADO.NET的数据提供程序和数据连接——ADO.NET学习&应用笔记之二

类似于ADODB连接模式的数据库操作程序的,是ADO.NET的数据提供程序。.NET Framework 1.1版的ADO.NET提供了四种托管数据提供程序。

 

一、ADO.NET的数据提供程序 
ADO.NET配套的四种数据提供程序,分别是用于SQL Server7.0及更高版本的SqlClient数据提供程序,对应的名字空间是System.Data.SqlClient;用于OLE DB数据源的OleDb数据提供程序,对应的名字空间是System.Data.OleDb;用于ODBC数据源的Odbc数据提供程序,对应的名字空间是System.Data.Odbc;用于Oracle数据源的OracleClient数据提供程序,对应的名字空间是System.Data.OracleClient。(注意:.NET Framework1.0版本不包括Odbc和OracleClient数据提供程序,需要从微软官方站点下载安装)

ADO.NET的SQL Server数据提供程序比OLE DB数据提供程序有着更优异的性能。前者专用于SQL Server,并有针对的优化,通过TDS数据包与SQL Server直接对话,后者必须通过一个COM组件集,即数据源的OLE DB提供程序和OLE DB服务组件来与数据源进行交流。因此对于SQL Server的访问,推荐使用SQL Server数据提供程序。下图为两者的数据访问比较图:

 

 

二、使用Connection对象连接数据库 
需要访问数据源的数据,首先要通过Connection对象,连接到指定的数据源,FCL数据提供程序的Connection类是一个通用接口System.Data.IDBConnection的实现。
Connection的构造函数通常都有一个连接字符串作为参数,连接字符串也可以使用Connction.ConnectionString属性设置,如果使用c#表示,它们创建连接语句形式通常如下:

IDBConnection conn = new xxxConnection("connection string");
conn.Open();

Connection的Close方法能够关闭数据连接,但是有些时候Close不能够物理性质的中断到数据库的连接。除了Close方法,还有一个Dispose方法,它会调用Close方法,此外通过设置一个Boolean参数指定非托管资源是否应该释放(包括COM接口指针、ODBC句柄等),该方法调用之后,Connection对象就完全释放而无法重用了。

(一)连接字符串的差异 
对于不同的数据提供程序,连接字符串存在着差异。
SqlConnection的数据库连接字符串通常如下:
"Server=mySQLServer;Database=northwind;User ID=sa;Password=mypwd;" 
OleDbConnection的数据库连接字符串如下:
"Provider=SQLOLEDB;Data Source=mySqlServer;Initial Catalog=northwind;User ID=sa;Password=mypwd;" 
OdbcConnection的数据库连接字符串如下:
"Driver={SQL Server};Server=localhost;Database=northwind"或者"DSN=dsnname" 
OracleConnection的数据库连接字符串如下:
"Data Source=Oracle8i;User ID=sa;pwd=mypwd"

(二)应用程序中连接字符串的存储 
为了方便管理数据连接,通常数据连接字符串不写为硬码,而存储在应用程序之外。
《.NET 数据访问架构指南》一文用一节讨论了链接字符串的存储。链接字符串的存储可以采用下面5种方式:
1、应用程序配置文件 例如用于ASP.NET Web应用程序的Web.config文件。 
2、通用数据链接文件(UDL) (只被OLE DB .NET 数据供应器所支持) 
3、Windows 注册表 
4、定制文件 
5、COM+ 目录,通过过使用构造字符串(只用于服务组件) 
这些方式各有优缺点,在ASP.NET中最常见的是使用Web.config存储连接字符串,包含在元素appSettings的一个add节点当中。
 <appSettings>
  <add key="DBConnStr"
     value="server=(local);Integrated Security=SSPI;database=northwind"/>
 </appSettings> 
在ASP.NET应用程序当中使用System.Configuration.ConfigurationSettings类的AppSettings静态属性,可以获取应用程序的定制设置。

(三)连接池(Connection pooling)
连接池能让数据库中使用同一个帐号的不同会话共享连接,避免频繁的打开和关闭连接,它能够显著的提高应用程序的性能。
使用SQL Server数据提供程序的连接池需要注意,每当应用打开一个连接,.NET Framework将创建池,每个连接池都和一个不同的连接字符串相关联。也就是说,如果新创建的一个连接使用的连接字符串和现有的池中连接相匹配,将创建新的池。注意:池化机制对名称-值对间的空格敏感。
下面的三个连接创建了三个不同的池:
SqlConnection conn = new SqlConnection("Integrated Security=SSPI;Initial Catalog=pubs");
conn.Open(); //创建池A

SqlConnection conn = new SqlConnection("Integrated Security=SSPI;Initial Catalog=Northwind");
conn.Open(); //创建池B,和前面的连接字符串不一样

SqlConnection conn = new SqlConnection("Integrated Security=SSPI ;Initial Catalog=Northwind");
conn.Open(); //创建池C,SSPI后多了一个空格

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值