用C++代码建立和压缩ACCESS数据库文件
2007-04-16 11:41
330 查看
用C++代码建立和压缩ACCESS数据库文件
作者:陈建初
ACCESS的数据库引擎MS JET 4.0是目前应用很广的小型数据库引擎,它具有使用简单,费用低廉(基本上是免费),对机器的配置要求低和对操作者的技术要求低等特点。在使用MS JET的时候如果我们的程序能够自动建立和维护所用的*.MDB文件,那么我们的小程序将会显得更专业。下面简单介绍一下如何动态建立*.MDB文件和压缩*.MDB文件的操作,以下代码都是基于ADO数据编程。
1) 动态建立*.MDB文件。
上面使用了ADOX接口和智能指针的方法,如果你使用#import指令来引入ADOX库那么就更方便了。
得到了Catalog对象就可以操作它里面的子对象(Groups, Procedures, Tables, Views, Users)等,例如要检查某个表是否已经存在 :
使用智能指针的方法同理。
2) 压缩*.MDB文件。
Jet OLEDB:Engine Type=5表示使用MS JET 4x版本的MDB文件,如果没有给出本属性则系统自动将压缩后的MDB文件转换为当前最新的版本。
MS的文档指出自MDAC2.6开始便不再包含JET组件,而MDAC2.7是JRO的最后一个版本,而且JRO不能在WIN64上使用。看样子是M$怂恿我们用SQL SERVER了。
作者:陈建初
ACCESS的数据库引擎MS JET 4.0是目前应用很广的小型数据库引擎,它具有使用简单,费用低廉(基本上是免费),对机器的配置要求低和对操作者的技术要求低等特点。在使用MS JET的时候如果我们的程序能够自动建立和维护所用的*.MDB文件,那么我们的小程序将会显得更专业。下面简单介绍一下如何动态建立*.MDB文件和压缩*.MDB文件的操作,以下代码都是基于ADO数据编程。
1) 动态建立*.MDB文件。
#include <adoint.h> #include <adoctint.h> #include <comdef.h> #include <shwapi.h> #pragma comment(lib, "comsupp.lib") #pragma comment(lib, "shlwapi.lib") CComPtr<ADOCatalog>Catalog; HRESULT hr = Catalog.CoCreateInstance(L"ADOX.Catalog"); if (FAILED(hr)) { throw _com_error(hr, NULL); } static const TCHAR szConnStr[] = _T("Provider=Microsoft.Jet.OLEDB.4.0;") _T("Data Source=C://TEST1.MDB;"); CComVariant varConn; hr = Catalog->Create(CComBSTR(szConnStr), &varConn); if (FAILED(hr)) { throw _com_error(hr, NULL); }
上面使用了ADOX接口和智能指针的方法,如果你使用#import指令来引入ADOX库那么就更方便了。
#import "c:/program files/common files/system/ado/msadox.dll" using namespace ADOX; _CatalogPtr pCatalog; pCatalog.CreateInstance(__uuidof(Catalog)); pCatalog->Create(CComBSTR(szConnStr));
得到了Catalog对象就可以操作它里面的子对象(Groups, Procedures, Tables, Views, Users)等,例如要检查某个表是否已经存在 :
TablesPtr pTables = pCatalog->GetTables(); _Table* pTable = NULL; if (pTables->get_Item(CComVariant(_T("Table Name")), &pTable) == S_OK) { // OK 指定的表存在。 }
使用智能指针的方法同理。
CComPtr<ADOTables>Tables = NULL; Catalog->get_Tables(&Tables); CComPtr<ADOTable>Table = NULL; Tables->get_Item(CComVariant(_T("Table Name")), &Table);
2) 压缩*.MDB文件。
#include <adojet.h> static const TCHAR szSrc[] = _T("Provider=Microsoft.Jet.OLEDB.4.0;") _T("Data Source=C://TEST1.MDB;"); //_T("Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=???"); static const TCHAR szDst[] = _T("Provider=Microsoft.Jet.OLEDB.4.0;") _T("Data Source=C://TEST2.MDB;"); //_T("Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=???");
Jet OLEDB:Engine Type=5表示使用MS JET 4x版本的MDB文件,如果没有给出本属性则系统自动将压缩后的MDB文件转换为当前最新的版本。
CComPtr<IJetEngine>Engine; // if (SUCCEEDED(Engine.CoCreateInstance(__uuidof(JetEngine)))) if (SUCCEEDED(Engine.CoCreateInstance(L"JRO.JetEngine"))) { Engine->CompactDatabase(CComBSTR(szSrc), CComBSTR(szDst)); }
MS的文档指出自MDAC2.6开始便不再包含JET组件,而MDAC2.7是JRO的最后一个版本,而且JRO不能在WIN64上使用。看样子是M$怂恿我们用SQL SERVER了。
相关文章推荐
- 用C++代码建立和压缩ACCESS数据库文件
- 用C++代码建立和压缩ACCESS数据库文件
- 基于AD0建立和压缩ACCESS数据库文件的C++简单实现
- Java建立Zip压缩文件的代码实例
- C++ 哈夫曼树对文件压缩、加密实现代码
- 操作、压缩MDB文件;使用ADO读写Mysql数据库;建立数据库和表的VBS脚本代码(2013-08-26 11:39:34)
- Yii --EClientScript 扩展,css,js文件代码压缩合并加载
- 文件转移后压缩并直接存进数据库后直接读出并解压完整代码
- VB使用ADOX压缩修复ACCESS数据库文件的类模块
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果
- C++ 代码技巧_头文件依赖,Pimpl法
- 关于windows下C++实现解压、压缩 .tar.gz文件
- 用ant压缩文件并备份到ftp的代码
- 双链表的建立,测长度,打印,插入c++代码实例及运行结果
- gulp压缩代码之后,不报错,没有压缩文件
- 对当前目录下所有文件进行压缩代码
- C++项目之文件的压缩及解压缩
- 【代码备忘】C++ fstream 读写 unicode 文件
- C++内嵌代码使用压缩的方法(compress和uncompress函数)需要有zlib,编译时加-lz
- TIF图像文件的读取(c++代码)