C语言_access文件,用C++代码建立和压缩ACCESS数据库文件

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了。

作者:陈建初

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值