一个连接对象代表了应用程序同数据源的连接。任何对数据源的操作都需要一个连接对象,只不过这种连接有时需要你显式地建立,而有的时候,这种连接被隐式地建立——如在创建了一个记录集对象时,就会在应用程序中建立起一个连接对象。
一个连接对象代表了一个单独的同数据源的连接。但是在一个单独的连接上,可以有多个命令或者记录集来使用。这样可以减少多次操作中同数据源建立连接的次数以优化程序执行的效率。
连接对象为ADO对数据源的操作和对记录集的操作提供一个操作环境,连接对象还可以用于操作事务处理。
连接对象提供了许多属性和方法,以下是这些属性和方法的详细介绍。
1. 连接对象的方法
(1)Open()函数。
建立了Connection对象实例后,需要调用Open()函数来打开数据源的连接。Open()函数原型如下:
HRESULT Open(_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options);
参数说明:
ConnectionString:可选参数,包含连接信息的字符串。
UserID:可选参数,使用者访问数据库的用户名。
Password:可选参数,用户访问数据库的口令。
Options:可选参数,此参数是ConnectOpertionEnum类型的值。用来指明此连接是同步进行还是异步进行。
例如,下面是一个Open()函数使用的语句:
hr = pConn->Open("Data Source=MyDS;Provider=MSDASQL", "Admin", "");
ConnectionString连接字符串可以有一系列关键字和值组成,各字段之间用分号隔开。ADO处理下面的关键字,其余关键字与值对传递给数据提供程序。
Data Source:指定所使用的数据源名。
Provider:用于指定所使用的数据提供程序。
UserID:使用数据源的用户名。
Password:用户口令。
File Name:给出保存连接信息的提供程序说明文件名称。
(2)Close()函数。
当使用数据库后,应关闭连接,即调用Connection对象的Close()函数。ADO在关闭连接的同时,也关闭所有使用这个连接的ADO对象,如记录集对象(Recordset)和命令对象(Command)。下面是一个使用Close()函数的语句:
pConn->Close();
(3)Execute()函数。
Execute()函数用来执行各种DDL、DML指令。如果数据源支持SQL指令,可以直接在程序中执行SQL指令。Execute()函数定义如下:
_RecordsetPtr Execute(_bstr_t CommandText, VARIANT *RecordsAffected, long Options);
参数说明:
CommandText:要执行的命令文本,如SQL语句、表名或存储过程等。(www.xing528.com)
RecordAffected:可选参数,是执行命令后的返回值,表明符合命令的行数。
Options:可选参数,表示要执行命令的表达式,此参数的取值参见表4-2。
Execute()函数的返回值是执行命令后得到的记录集。
(4)事务处理函数。
这些函数用来对事务进行操作,其定义如下:
BeginTrans():在程序中开始一个事务的操作。
CommitTrans():对事务操作进行提交。
RollBackTrans():撤销事务操作。
2. 连接对象的属性
连接对象支持一系列的属性,通过改变这些属性,可以操纵连接对象的当前状态,或者你可以通过查询这些属性,来获得当前连接对象的基本信息。连接对象的这些属性中,有的是只读的,有的是可读写的。
以下将详细介绍连接对象的这些属性。
(1)Attributes属性。
该属性用来规定连接对象的属性,此对象的属性是可读写的。它的值可以是一些XactAttributeEnum类型的常数值的组合。这些常数值如下:
adXactCommitRetaining 设置此属性表明,在一个事务被提交后,自动开始另一个事务,并非所有的数据源都支持此属性。
adXactAbortRetaining 设置此属性表明,在一个事务被中止后,自动开始另一个事务,并非所有的数据源都支持此属性。
(2)ConnectionTimeout属性。
ConnectionTimeout属性是可读写的属性值,此属性指定了在建立连接时的连接超时时间。如果在指定的时间内未能建立连接,则产生连接错误,并取消连接。此属性值是long类型的,缺省值是15s。
(3)CommandTimeout属性。
CommandTimeout属性是可读写的属性值,此属性指定了在执行命令时的连接超时时间。如果在指定的时间内未能执行命令,则产生命令错误。并取消命令的执行。此属性的值是long类型的,缺省值是30s。
注意:命令对象的命令超时值不受同一连接中的连接对象中所设置的命令超时值的影响。即命令对象的超时值没有继承同一连接中的连接对象中所设置的命令超时值,它们是独立设置的。命令对象设置的超时值可以覆盖连接对象中设置的超时值。
(4)ConnectionString属性。
ConnectionString属性是可读写的属性,此字符串中包含着要与数据源建立连接时所需要的信息。具体的描述参见4.3.2小节。
(5)DefaultDatabase属性。
指定了在打开与数据源的连接而又未提供数据源的名称时,所使用的默认数据源的名称。默认DefaultDatabase属性可以读写。
其它连接属性如表4-3所示。
表4-3 连接对象的其它属性
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。