首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

C++ 動態建立與壓縮 Access MDB 資料庫完整教學

     編輯:關於VC++

Microsoft Jet 4.0 (MS JET) 是廣泛應用的輕量級資料庫引擎,具備免費、低資源需求、易部署等優點。若應用程式能自動建立與維護 *.mdb 檔案,將大幅提升專業度與部署便利性。本文示範基於 ADO/ADOX 的動態建庫與壓縮操作。

一、動態建立 *.mdb 檔案

方法 1:ADOX + 智慧指標 (ATL)

#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);

方法 2:#import 導入型別庫 (更簡潔)

#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);

二、壓縮 *.mdb 檔案

使用 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 格式;若省略則自動轉為最新版本
  • MDAC 2.6 起不再內含 JET 元件
  • MDAC 2.7 為 JRO 最後版本,且 不支援 64 位元環境
  • 微軟已明確引導開發者遷移至 SQL Server Express / LocalDB

本文範例程式碼展示了從建立空資料庫、操作資料表結構到壓縮整理的完整流程,適用於需內嵌輕量資料庫的桌面應用程式開發。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved