最新历史版本 :CDatabase

来源:互联网 发布:cad2015for mac汉化包 编辑:程序博客网 时间:2024/05/17 03:18

CDatabase

CObject

 CDatabase


CDatabase
MFC中的类。CDatabase对象表示到数据源的连接,通过它可以操作数据源。数据源是位于一些数据库管理系统(DBMS)的数据的指定实例,包括MicrosoftSQL ServerMicrosoft AccessBorland dBASExBASE。在应用中可以同时使一个或多个CDatabase对象活动。
注意:
如果在处理数据访问对象(DAO)类而不是开放数据库连接(ODBC)类,可使用类CDaoDatabase。有关的更多信息,请参阅联机文档“Visual C++程序员指南”中的“数据库主题(通用)”与“DAOMFC”。
为使用CDatabase,构造一个CDatabase对象并调用它的OpenEx成员函数。这打开了一个连接。在接着构造CRecordset对象以操纵连接的数据源时,向CDatabase对象传递记录集构造程序指针。完成使用连接时调用Close成员函数并销毁CDatabase对象。Close关闭以前没有关闭的任何记录集。
有关CDatabase的更多信息,请参阅联机文档“Visual C++程序员指南”中的“数据源(ODBC)”和“数据库主题(通用)”。
#include <afxdb.h>

CDatabase
类成员

数据成员

m_hdbc   对数据源的开放数据库连接(ODBC)连接句柄。类型HDBC


构造函数

CDatabase   构造一个CDatabase对象。必须通过调用OpenExOpen初始化这个对象

Open        建立到数据源的一个连接(通过ODBC驱动程序)

OpenEx      建立到数据源的一个连接(通过ODBC驱动程序)

Close       关闭数据源连接


数据库属性

GetConnect                  返回用于连接CDatabase对象和数据源的ODBC连接字符串

IsOpen                      如果CDatabase对象当前与数据源连接,则返回非零

GetDatabaseName             返回当前使用的数据库名字

CanUpdate                   如果CDatabase可更新(不是只读的),则返回非零

CanTransact                 如果数据源支持事务,则返回非零

SetLoginTimeout             设置数据源连接试图超时的秒数

SetQueryTimeout             设置数据库查询操作超时的秒数。影响以后的所有记录集调用:OpenAddNewEditDelete

GetBookmarkPersistence      标识记录集对象上书签持久化操作

GetCursorCommitBehavior     标识在打开的记录集对象上提交事务的效果

GetCursorRollbackBehavior   标识在打开的记录集对象上回滚事务的效果


数据库操作

BeginTrans       在连接的数据源上开始“事务”──类CRecordset的一系列可回滚的AddNewEditDeleteUpdate成员函数调用。数据源必须支持事务才能使BeginTrans有效

BindParameters   允许在调用CDatabase::ExecuteSQL前绑定参数

CommitTrans      完成由从BeginTrans开始的事务。执行这个事务中改变数据源的命令

Rollback         回滚当前事务期间所做变化,数据源返回到BeginTrans调用时定义的未改变的以前状况

Cancel           取消第二个线程的异步操作或处理

ExecuteSQL       执行一条SQL语句。不返回数据记录

 

CDatabase::OpenEx

virtual BOOL OpenEx(LPCTSTR lpszConnectString, DWORD dwOptions = 0);
  throw(CDBException,CMemoryException);

返回值:
如果成功形成连接,则返回非零值;否则如果在出现要求更多连接信息的对话框时,用户选择Cancel,则为0。在其它所有情况下框架产生一个异常。

参数:

lpszConnectString       指定一个ODBC连接字符串。这包括数据源名字和用户ID与密码等其它任选信息。例如“DSN = SQLServer_Source; UID = SA; PWD =abc123”是一个可能的连接字符串。注意到如果为lpszConnectString传递NULL,则将出现数据源对话框,提示用户选择一个数据源。

dwOptions         指定下列值一种组合的位屏蔽。缺省值0表示以共享方式打开数据库,带有写访问,不装入ODBC游标库DLL,并且只有在没有足够信息形成连接时显示ODBC连接对话框。

·CDatabase::openExclusive       此类库版本不支持。为共享(非排它)数据源总是打开的。如果选定此选项,断言失败。

·                                                 CDatabase::UseCursorLib        装入ODBC游标库DLL。游标掩盖了基础ODBC驱动程序的一些功能,有效地阻止使用动态集(如果驱动程序支持它们)。如果装入游标库,支持的唯一游标是静态快照和只能向前游标。缺省值为TRUE。如果计划从CRecordset直接创建一个记录集对象而不派生,则不应装入游标库。

· CDatabase::noOdbcDialog      不管是否提供了足够的连接信息,不显示ODBC连接对话框。

· CDatabase::forceOdbcDialog 总是显示ODBC连接对话框。


说明:
调用这个成员函数,可以初始化一个新构造的CDatabase对象。必须在用来构造记录集对象前初始化数据库对象。
如果OpenEx调用中的lpszConnectString参数不包含形成连接的足够信息,则ODBC驱动程序打开一个对话框,从用户那里得到必要信息。假设你没有在dwOptions选择中设置CDatabase::noOdbcDialogCDatabase::forceOdbcDialog。调用OpenEx时,连接字符串lpszConnectString自己存放在CDatabase对象中,并且可以通过调用GetConnect成员函数成为有效。
如果需要的话,可以在调用OpenEx之前打开自己的对话框,从用户处获取密码等信息,然后把那些信息加到传递到OpenEx的连接字符串。
或者有可能想保存传递的连接字符串,这样在应用等到下次调用OpenEx时可以在CDatabase对象上重用它。
还可以把连接字符串用于多个登录授权级别(每个用于不同的CDatabase对象),或者传送其它数据源指定信息。有关连接字符串的更多信息,请参阅联机文档“ODBC SDK程序员参考中的第5章。
连接有可能试图超时,例如DBMS主机无效时。如果连接试图失败,则OpenEx产生CDBException

示例:
//Embed a CDatabase object
//in your document class
CDatabase m_dbCust( );

//Connect the object to a
//read-only data source where
//the ODBC connection dialog box
//will always remain hidden
m_dbCust.OpenEx( _T("DSN=MYDATASOURCE;UID=JOES"), CDatabase::openReadOnly | CDatabase::noOdbcDialog));

 

原创粉丝点击