C#与数据库访问技术总结(二)之 Connection对象

2.2 Connection 对象与数据库连接

    在不同的Provider类型下,Connection对象的命名也是不同的,但它们有一个共同的功能,那就是管理与数据源的连接。

2.2.1  Connection对象的常用属性

Connectionion对象主要用于连接数据库,它的常用的属性如下。

ConnectionString属性:该属性用来获取或设置用于打开SQL Server数据库的字符串。

ConnectionTimeout属性:该属性用来获取在尝试建立连接时终止尝试,并生成错误之前所等待的时间。

DataBase属性:该属性用来获取当前数据库或连接打开后要使用的数据库的名称。

DataSource属性:该属性用来设置要连接的数据源实例名称。

例如SQLServer的Local服务实例。

 State性该属性:是一个枚举类型的值,用来表示同当前数据库的连接状态。该属性的取值情况和含义如下表所示。

Provider值描述(ConnectionSate枚举成员值)

属  性  值

对应含义 

Broken

该连接对象与数据源的连接处于中断状态。只有当连接打开后再与数据库失去连接才会导致这种情况。可以关闭处于这种状态的连接,然后重新打开(该值是为此产品的未来版本保留的)

Closed

该连接处于关闭状态

Connecting

该连接对象正在与数据源连接(该值是为此产品的未来版本保留的)

Executing

该连接对象正在执行数据库操作的命令

Fetching

该连接对象正在检索数据

Open

该连接处于打开状态

State属性一般是只读不写的,以下代码演示了使用State属性管理控制数据连接的方式。

复制代码

//设置连接对象

SqlConnection conn;

//如果是空闲状态,连接数据库

if(conn.State == ConnectionState.Closed)

{

conn.Open();

}

//访问数据库的代码

……

//最后关闭连接

if(conn.State == ConnectionState.Open)

{

conn.Close();

}

复制代码

2.2.2  Connection对象的连接字符串

在ConnectionString连接字符串里,一般需要指定将要连接数据源的种类、数据库服务器的名称、数据库名称、登录用户名、密码、等待连接时间、安全验证设置等参数信息,这些参数之间用分号隔开。下面将详细描述这些常用参数的使用方法。

1. Provider参数

     Provider参数用来指定要连接数据源的种类。如果使用的是SQL ServerDatahovider,则不需要指定Provider参数,因为SQL Server DataProvider已经指定了所要连接的数据源是SQl Server服务器。如果使用的是O1eDB Data Provider或其他连接数据库,则必须指定Provider参数。(注意:有的人喜欢用udl获取数据库连接用的string,但是其中会带有Provider参数,编译时出错,所以当出错信息提示 Provider 有关的内容错误时,可以删除这一项。)

下表说明了Provider参数值和连接数据源类型之间的关系。

Provider值

对应连接的数据源

SQL OLE DB

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参数可以写成Server=(local)\实例名。另外,可以使用计算机名作为服务器的值。如果连接的是远端的数据库服务器,Server参数可以写成Server=IP或“Server=远程计算机名”的形式。

Server参数也可以写成Data Source,比如Data Source=IP。

1

2

3

server=(local);Initial Catalog=student;user Id=sa; password= ;

Data Source=(localhost);Initial Catalog=student;user Id=sa; password= ;

3.DataBase参数

DataBase参数用来指定连接的数据库名。比如DataBase=Master,说明连接的数据库是Master,DataBase参数也可以写成Initial Catalog,如Initial Catalog=Master。

4.User id参数和Password参数

Uid参数用来指定登录数据源的用户名,也可以写成UserID。比如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方式登录。

一般来说,使用集成安全验证的登录方式比较安全(第一种如果),因为这种方式不会暴露用户名和密码。 

安装SQL Server时,如果选中“Windows身份验证模式”单选按钮则应该使用如下的连接字符串Data Source=(local); Init Catalog=students; Integrated Security=SSPI;

Integrated Security=SSPI表示连接时使用的验证模式是Windows身份验证模式。 

7.Pooling、MaxPool Size和Min Pool Size参数

      Pooling参数用来说明在连接到数据源时,是否使用连接池,默认是True。

  当该值为True时,系统将从适当的池中提取SQLConnection对象,或在需要时创建该对象并将其添加到适当的池中。

  当取值为False时,不使用连接池。

     当应用程序连接到数据源或创建连接对象时,系统不仅要开销一定的通信和内存资源,还必须完成诸如建立物理通道(例如套接字或命名管道),与服务器进行初次握手,分析连接字符串信息,由服务器对连接进行身份验证,运行检查以便在当前事务中   登记等任务,因此往往成为最为耗时的操作。

     实际上,大多数应用程序仅使用一个或几个不同的连接配置。这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。为了使打开的连接成本最低,ADO.NET使用称为Pooling(即连接池)的优化方法。

    在连接池中,为了提高数据库的连接效率,根据实际情况,预先存放了若干数据库连接对象,这些对象即使在用完后也不会被释放。应用程序不是向数据源申请连接对象,而是向连接池申请数据库的连接对象。另外,连接池中的连接对象数量必须同实  际需求相符,空置和满载都对数据库的连接效率不利。

    Max Pool Size和Min Pool Size这两个参数分别表示连接池中最大和最小连接数量,默认分别是100和0。根据实际应用适当地取值将提高数据库的连接效率。

8.综合实例

    下面通过实例来说明连接字符串的具体含义。

如果连接字符串是:

"Provider= Microsoft.Jet.OleDB.4.0;Data Source=D:\login.mdb"

    则说明数据源的种类是Microsoft.Jet.OleDB.4.0,数据源是D盘下的login.mdb Access数据库,用户名和密码均无。

如果连接字符串是:

"Server= (local); DataBase=Master;Uid =sa;Pwd=;ConnectionTimeout=20"

    由于没有指定Provider,所以可以看出该连接字符串用于创建SqlConnection对象,连接SQL Server数据库。需连接的SQL Server数据库服务器是local,数据库是Master,用户名是sa,密码为空,而最大连接等待时间是20秒。

猜你喜欢

转载自blog.csdn.net/u010312937/article/details/100144534
今日推荐