- 积分
- 73549
- 明经币
- 个
- 注册时间
- 2001-6-7
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
如何在ObjectARX程序中用MFC OLE DB类访问Access数据库?我在编译时总是出现LNK2001错误。[br]创建有关头文件,文件名如"myHeader.h"
内容如下:
#ifndef __MyHeader_H__
#define __MyHeader_H__
#include <atlbase.h>
extern CComModule _Module;
#include <atlcom.h>
#include <atldbcli.h>
#include <atldbsch.h>
#endif
在要打开数据库的类声明中加包含上述头文件
并加入以下内容:
CDataSource * pDB;
CSession* pSession;
CMyRecordSet* pSet;
在类实现文件中初始化为上述指针变量为NULL;
在适当在函数中加入以下代码打开数据库(以Access数据库为例):
--pDB = new CDataSource();
--pSession = new CSession();
--pSet = new CMyRecordSet();
--
CDBPropSet--dbinit(DBPROPSET_DBINIT);
--dbinit.AddProperty(DBPROP_AUTH_CACHE_AUTHINFO, true);
--dbinit.AddProperty(DBPROP_AUTH_ENCRYPT_PASSWORD, false);
--dbinit.AddProperty(DBPROP_AUTH_MASK_PASSWORD, false);
--dbinit.AddProperty(DBPROP_AUTH_PASSWORD, "");
--dbinit.AddProperty(DBPROP_AUTH_USERID, "Admin");
--dbinit.AddProperty(DBPROP_INIT_DATASOURCE, "C:\\WuZejin\\Geology\\Zzt2.mdb");
--dbinit.AddProperty(DBPROP_INIT_MODE, (long)16);
--dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
--dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, "");
--dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
--//dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);
--
--HRESULT hr = pDB->OpenWithServiceComponents("Microsoft.Jet.OLEDB.4.0", &dbinit);
--if( hr != S_OK ) return hr;
--hr = pSession->Open(*pDB);
--if ( hr != S_OK ) return hr;
--hr = pSet->Open(*pSession);
--if ( hr != S_OK ) return hr;
--hr = pSet->MoveFirst();
--if ( hr != S_OK ) return hr;
(作者:WuZejin 时间:2001-08-13.10:33:33) |
|