Microsoft Jet 4.0 (MS JET) 是廣泛應用的輕量級資料庫引擎,具備免費、低資源需求、易部署等優點。若應用程式能自動建立與維護 *.mdb 檔案,將大幅提升專業度與部署便利性。本文示範基於 ADO/ADOX 的動態建庫與壓縮操作。
#include
#include
#include
#include
#pragma comment(lib, "comsupp.lib")
#pragma comment(lib, "shlwapi.lib")
CComPtr catalog;
HRESULT hr = catalog.CoCreateInstance(L"ADOX.Catalog");
if (FAILED(hr)) throw _com_error(hr);
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);
#import "c:\\program files\\common files\\system\\ado\\msadox.dll" using namespace ADOX;
_CatalogPtr pCatalog;
pCatalog.CreateInstance(__uuidof(Catalog));
pCatalog->Create(CComBSTR(szConnStr));
// #import 方式
TablesPtr pTables = pCatalog->GetTables();
_TablePtr pTable;
if (pTables->GetItem(CComVariant(_T("TableName")), &pTable) == S_OK) {
// 資料表存在
}
// 智慧指標方式
CComPtr tables;
catalog->get_Tables(&tables);
CComPtr table;
tables->GetItem(CComVariant(_T("TableName")), &table);
使用 JRO (Jet Replication Objects) 的 IJetEngine::CompactDatabase 方法:
#include
static const TCHAR szSrc[] =
_T("Provider=Microsoft.Jet.OLEDB.4.0;")
_T("Data Source=C:\\TEST1.MDB;");
// 可選:Jet OLEDB:Engine Type=5; Jet OLEDB:Database Password=xxx
static const TCHAR szDst[] =
_T("Provider=Microsoft.Jet.OLEDB.4.0;")
_T("Data Source=C:\\TEST2.MDB;");
CComPtr engine;
if (SUCCEEDED(engine.CoCreateInstance(L"JRO.JetEngine"))) {
engine->CompactDatabase(CComBSTR(szSrc), CComBSTR(szDst));
}
Jet OLEDB:Engine Type=5 指定輸出為 Jet 4.x 格式;若省略則自動轉為最新版本本文範例程式碼展示了從建立空資料庫、操作資料表結構到壓縮整理的完整流程,適用於需內嵌輕量資料庫的桌面應用程式開發。