程式連接的是 **資料庫(.mdb/.accdb)**,而非單一資料表。連接成功後,透過 SQL 指令操作其中的多張資料表。
CREATE TABLE)。CString connStr = _T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Data\\MyDB.accdb;Persist Security Info=False;");
_ConnectionPtr pConn;
pConn.CreateInstance(__uuidof(Connection));
pConn->Open(_bstr_t(connStr), "", "", adModeUnknown);
// 查詢
_RecordsetPtr pRs;
pRs.CreateInstance(__uuidof(Recordset));
pRs->Open(_bstr_t("SELECT * FROM Table1"), pConn.GetInterfacePtr(), adOpenStatic, adLockReadOnly, adCmdText);
while (!pRs->adoEOF) {
_variant_t val = pRs->GetCollect("FieldName");
// 處理資料
pRs->MoveNext();
}
pRs->Close();
// 新增/修改/刪除
pConn->Execute(_bstr_t("INSERT INTO Table2 (Col1) VALUES ('Value')"), NULL, adCmdText);
pConn->Close();SELECT * FROM TableA、UPDATE TableB SET ...。pConn->BeginTrans(); ... pConn->CommitTrans(); / RollbackTrans();。_com_error 捕獲 ADO 例外。