CDatabase::Open() 和 CDatabase::OpenEx()的区别

CDatabase::Open() 和 CDatabase::OpenEx()的区别,第1张

概述CDatabase::Open virtual BOOL Open(LPCTSTR lpszDSN,                   BOOL bExclusive = FALSE,                   BOOL bReadOnly = FALSE,                   LPCTSTR lpszConnect = _T("ODBC;"),             cdatabase::Open virtual BOol Open(LPCTSTR lpszDSN,
                  BOol bExclusive = FALSE,
                  BOol bReadonly = FALSE,
                  LPCTSTR lpszConnect = _T("ODBC;"),
                  BOol bUseCursorlib = TRUE
                 );
  throw(CDBException,cmemoryException); 返回值:
如果成功形成连接,则返回非零值;否则如果在出现要求更多连接信息的对话框时用户选择Cancel,则为0。在其它所有情况下框架产生一个异常。 参数: lpszDSN  指定一个数据源名字──通过ODBC管理程序登记的名字。如果在lpszConnect中指定了DSN值(以“DSN = <数据-源>”格式),则不能再在lpszDSN中指定。这时lpszDSN应为NulL。否则,如果想为用户提供一个数据源对话框,用户可以从中选择数据源,则可以传递NulL。有关详细信息,请参阅说明。  
bExclusive  这个版本类库中不支持。当前如果这个参数为TRUE,则断言失败。数据源总以共享形式(非独占)打开。  
bReadonly  如果想让连接只读或者禁止对数据源的更新,则为TRUE。所有相关记录集继承这个属性。缺省值为FALSE。  
lpszConnect  指定一个连接字符串。连接字符串连接一串信息,可能包括数据源名字、数据源上的用户ID、用户认证字符串(如果数据源需要的密码)和其它信息。整个连接字符串必须以字符串“ODBC;”作前缀(大写或小写)。“ODBC;”字符串用来表示这是到ODBC数据源的连接;类库的以后版本可能支持非ODBC数据源,这是向上兼容的。  
bUseCursorlib  如果想装入ODBC游标库DLL,则为TRUE。光标掩盖了基础ODBC驱动程序的一些功能,有效地阻止使用动态集(如果驱动程序支持它们)。如果装入游标库,支持的唯一光标是静态快照和只能向前游标。缺省值为TRUE。如果计划从CRecordset直接创建一个记录集对象而不派生,则不应装入游标库。 
说明:
调用这个成员函数,可以初始化一个新构造的cdatabase对象。必须在用来构造记录集对象前初始化数据库对象。
注意:
调用OpenEx成员函数是连接到数据源和初始化数据库对象的优先途径。
如果Open调用中的参照不包含形成连接的足够信息,则ODBC驱动程序打开一个对话框,从用户那里得到必要信息。如果调用Open,连接字符串lpszConnect自己存放在cdatabase对象中,并且可以通过调用GetConnect成员函数成为有效。
如果需要的话,可以在调用Open之前打开你自己的对话框,从用户处获取密码等信息,然后把那些信息加到传递到Open的连接字符串中。
或者有可能想保存传递的连接字符串,这样在应用等到下次调用Open时可以在cdatabase对象上重用它。
还可以把连接字符串用于多个登录授权级别(每个用于不同的cdatabase对象),或者传送其它数据源指定信息。有关连接字符串的更多信息,请参阅联机文档“ODBC SDK程序员参考”中第5章。
连接有可能试图超时,例如DBMS主机无效时。如果连接试图失败,则Open产生CDBException。 示例:
//Embed a cdatabase object
//in your document class
cdatabase m_dbCust( ); //Connect the object to a
//data source(no password)
//the ODBC connection dialog Box
//will always remain hIDden
m_dbCust.Open( _T("MYDATASOURCE"),FALSE,_T("ODBC;UID=JOES");
//...Or,query the user for all
//connection information
m_dbCust.Open(NulL); cdatabase::OpenEx virtual BOol OpenEx(LPCTSTR lpszConnectString,DWORD DWOptions = 0);
  throw(CDBException,Hei; Font-size:14px; line-height:25px"> 返回值:
如果成功形成连接,则返回非零值;否则如果在出现要求更多连接信息的对话框时,用户选择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::noOdbcDialog或cdatabase::forceOdbcDialog。调用OpenEx时,连接字符串lpszConnectString自己存放在cdatabase对象中,并且可以通过调用GetConnect成员函数成为有效。
如果需要的话,可以在调用OpenEx之前打开自己的对话框,从用户处获取密码等信息,然后把那些信息加到传递到OpenEx的连接字符串。
或者有可能想保存传递的连接字符串,这样在应用等到下次调用OpenEx时可以在cdatabase对象上重用它。
还可以把连接字符串用于多个登录授权级别(每个用于不同的cdatabase对象),或者传送其它数据源指定信息。有关连接字符串的更多信息,请参阅联机文档“ODBC SDK程序员参考”中的第5章。
连接有可能试图超时,例如DBMS主机无效时。如果连接试图失败,则OpenEx产生CDBException。 //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)); 本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/youngyi2006/archive/2010/02/21/5313809.aspx 总结

以上是内存溢出为你收集整理的CDatabase::Open() 和 CDatabase::OpenEx()的区别全部内容,希望文章能够帮你解决CDatabase::Open() 和 CDatabase::OpenEx()的区别所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1180018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存