ADO.NET对象模型中有5个主要的数据库访问和操作对象,分别是Connection、Command、DataReader、DataAdapter和DataSet对象。
1. Provider参数
Provider参数用来指定要连接数据源的种类。如果使用的是SQL Server Data Provider,则不需要指定Provider参数,因为SQL Server Data Provider已经指定了所要连接的数据源是SQL Server服务器。如果使用的是OleDB Data Provider或其他连接数据库,则必须指定Provider参数。下表说明了Provider参数值和连接数据源类型之间的关系。
表Provider值描述
Provider值 |
对应连接的数据源 |
SQLOLEDB |
Microsoft OLEDB Provider for SQL Server |
MSDASQL |
Microsoft OLEDB Provider for ODBC |
Microsoft.Jet.OLEDB.4.0 |
Microsoft OLEDB Provider for Access |
MSDAORA |
Microsoft OLEDB Provider for Oracle |
2. Server参数
Server参数用来指定需要连接的数据库服务器(或数据域)。比如Server = (local),指定连接的数据库服务器是在本地。如果本地的数据库还定义了实例名,Server参数可以写成Server = (local)\实例名。如果连接的是远端的数据库服务器,Server参数可以写成Server = Ip'或“Server = 远程计算机名”的形式。
Server参数也可以写成Data Source,比如Data Source = Ip。
3. DataBase参数
DataBase参数用来指定连接的数据库名。比如DataBase = Master,说明连接的数据库是Master,DataBase参数也可以写成Initial Catalog,如Initial Catalog = Master。
4. Uid参数和Pwd参数
Uid参数用来指定登录数据源的用户名,也可以写成User ID。比如Uid(User ID) = sa,说明登录用户名是sa。
Pwd参数用来指定连接数据源的密码,也可以写成Password。比如Pwd(Password) = asp.net,说明登录密码是asp.net。
5. Connect Timeout参数
Connect Timeout参数用于指定打开数据库时的最大等待时间,单位是秒。如果不设置此参数,默认是15秒。如果设置成–1,表示无限期等待,一般不推荐使用。
6. Integrated Security参数
Integrated Security参数用来说明登录到数据源时是否使用SQL Server的集成安全验证。如果该参数的取值是True(或SSPI,或Yes),表示登录到SQL Server时使用Windows验证模式,即不需要通过Uid和Pwd这样的方式登录。如果取值是False(或No),表示登录SQL Server时使用Uid和Pwd方式登录。
一般来说,使用集成安全验证的登录方式比较安全,因为这种方式不会暴露用户名和密码。
7. Pooling、Max Pool Size和Min Pool Size参数
Pooling参数用来说明在连接到数据源时,是否使用连接池,默认是True。当该值为True 时,系统将从适当的池中提取 SQLConnection 对象,或在需要时创建该对象并将其添加到适当的池中。当取值为False时,不使用连接池。
当应用程序连接到数据源或创建连接对象时,系统不仅要开销一定的通信和内存资源,还必须完成诸如建立物理通道 (例如套接字或命名管道),与服务器进行初次握手,分析连接字符串信息,由服务器对连接进行身份验证,运行检查以便在当前事务中登记等任务,因此往往成为最为耗时的操作。
实际上,大多数应用程序仅使用一个或几个不同的连接配置。这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。为了使打开的连接成本最低,ADO.NET使用称为Pooling(即连接池)的优化方法。
在连接池中,为了提高数据库的连接效率,根据实际情况,预先存放了若干数据库连接对象,这些对象即使在用完后也不会被释放。应用程序不是向数据源申请连接对象,而是向连接池申请数据库的连接对象。另外,连接池中的连接对象数量必须同实际需求相符,空置和满载都对数据库的连接效率不利。
Max Pool Size和Min Pool Size这两个参数分别表示连接池中最大和最小连接数量,默认分别是100和0。根据实际应用适当地取值将提高数据库的连接效率。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1687026