ADO.NET对象模型中有5个主要的数据库访问和操作对象,分别是Connection、Command、DataReader、DataAdapter和DataSet对象。
ADO.NET对象模型中有5个主要的数据库访问和操作对象,分别是Connection、Command、DataReader、DataAdapter和DataSet对象。
其中,Connection对象主要负责连接数据库,Command对象主要负责生成并执行SQL语句, DataReader对象主要负责读取数据库中的数据,DataAdapter对象主要负责在Command对象执行完SQL语句后生成并填充 DataSet和DataTable,而DataSet对象主要负责存取和更新数据。
ADO.NET主要提供了两种数据提供者(Data Provider),分别是SQL Server.NET Provider和OLE DB.NET Provider。
SQL Server.NET Framework数据提供程序使用它自身的协议与SQL Server数据库服务器通信,而OLE DB.NET Framework则通过OLE DB服务组件(提供连接池和事务服务)和数据源的OLE DB提供程序与OLE DB数据源进行通信。
它们两者内部均有Connection、 Command、DataReader和DataAdapter 4类对象。对于不同的数据提供者,上述4种对象的类名是不同的,而它们连接访问数据库的过程却大同小异。这是因为它们以接口的形式,封装了不同数据库的连接访问动作。正是由于这两种数据提供者使用数据库访问驱动程序屏蔽了底层数据库的差异,所以从用户的角度来看,它们的差别仅仅体现在命名上。
下表描述了这两类数据提供者下的对象命名。
ADO.NET对象描述
对 象 名 |
OLE DB数据提供者的类名 |
SQL Server数据提供者类名 |
Connection对象 |
OleDbConnection |
SqlConnection |
Command对象 |
OleDbCommand |
SqlCommand |
DataReader对象 |
OleDbDataReader |
SqlDataReader |
DataAdapter对象 |
OleDbDataAdapter |
SqlDataAdapter |
Connectionion对象主要用于连接数据库,它的常用的属性如下。
Ü ConnectionString属性:该属性用来获取或设置用于打开 SQL Server 数据库的字符串。
Ü ConnectionTimeout属性:该属性用来获取在尝试建立连接时终止尝试,并生成错误之前所等待的时间。
Ü DataBase属性:该属性用来获取当前数据库或连接打开后要使用的数据库的名称。
Ü DataSource属性:该属性用来设置要连接的数据源实例名称,例如SQL Server的Local服务实例。
Ü State属性该属性:是一个枚举类型的值,用来表示同当前数据库的连接状态。该属性的取值情况和含义如表所示。
表Provider值描述
属 性 值 |
对 应 含 义 |
Broken |
该连接对象与数据源的连接处于中断状态。只有当连接打开后再与数据库失去连接才会导致这种情况。可以关闭处于这种状态的连接,然后重新打开 |
Closed |
该连接对象正在与数据源连接 |
Connecting |
该连接对象正在与数据源连接 |
Executing |
该连接对象正在执行数据库操作的命令 |
Fetching |
该连接对象正在检索数据 |
Open |
该连接处于打开状态 |
State属性一般是只读不写的,以下代码演示了使用State属性管理控制数据连接的方式。
//设置连接对象
SqlConnection conn;
//如果是空闲状态,连接数据库
if ( conn.State == ConnectionState.Closed)
{
conn.Open();
}
//访问数据库的代码
…
//最后关闭连接
if(conn.State == ConnectionState.Open )
{
conn.Close();
}
在ConnectionString连接字符串里,一般需要指定将要连接数据源的种类、数据库服务器的名称、数据库名称、登录用户名、密码、等待连接时间、安全验证设置等参数信息,这些参数之间用分号隔开。下面将详细描述这些常用参数的使用方法。
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