基于AD0建立和压缩ACCESS数据库文件的C++简单实现
来源:互联网 发布:unity3d外包 编辑:程序博客网 时间:2024/06/04 14:33
ACCESS的数据库引擎MS JET 4.0是目前应用很广的小型数据库引擎,它具有使用简单,费用低廉(基本上是免费),对机器的配置要求低和对操作者的技术要求低等特点。在使用MS JET的时候如果我们的程序能够自动建立和维护所用的*.MDB文件,那么我们的小程序将会显得更专业。下面简单介绍一下如何动态建立*.MDB文件和压缩*.MDB文件的操作,以下代码都是基于ADO数据编程。 1) 动态建立*.MDB文件。
#include
#include
#include
#include
#pragma comment(lib, "comsupp.lib")
#pragma comment(lib, "shlwapi.lib")
CComPtrCatalog;
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 指定的表存在。
}
使用智能指针的方法同理。
CComPtrTables = NULL;
Catalog->get_Tables(&Tables);
CComPtrTable = NULL;
Tables->get_Item(CComVariant(_T("Table Name")), &Table);
2) 压缩*.MDB文件。
#include
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文件转换为当前最新的版本。
CComPtrEngine;
// 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了。
- 基于AD0建立和压缩ACCESS数据库文件的C++简单实现
- 用C++代码建立和压缩ACCESS数据库文件
- 用C++代码建立和压缩ACCESS数据库文件
- 用C++代码建立和压缩ACCESS数据库文件
- asp实现Access数据库的建立和压缩
- 大富翁论坛-富翁笔记-利用Delphi压缩和修复MS Access 2000的数据库文件
- 纯编码实现Access数据库的建立或压缩!!
- VB使用ADOX压缩修复ACCESS数据库文件的类模块
- VB使用ADOX压缩修复ACCESS数据库文件的类模块
- Access数据库的建立或压缩
- pb中压缩整理access数据库文件(mdb)
- pb中压缩整理access数据库文件(mdb)
- AD0.NET一个简单的用户登陆控制台程序
- 压缩SQL Server 2005指定数据库文件和日志的大小
- 基于socket的TCP和UDP通讯的简单建立
- C#中怎么创建ACCESS数据库文件
- Access数据库在线压缩的实现方法
- C# 创建和连接Access数据库文件
- 聚划算总结
- 使用Memory Analyzer tool(MAT)分析内存泄漏
- 于丹 论语 心得和感悟
- 文件部分-----(3)ASCII码文件读写操作----将学生信息写入到文件中,再从文件中读取信息
- 线索二叉树
- 基于AD0建立和压缩ACCESS数据库文件的C++简单实现
- HDU/HDOJ 2612 Find a way 双向BFS
- 一个简单的C++程序
- uva 10820 - Send a Table
- Android 支持不同的SDK版本平台
- 客户端通信过程
- 决定成败的49个细节
- Spring整合的quartz任务调度的实现方式
- SLF4J 教程(自由在各种log中切换)