首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 使用 ADO 連接 Access 實現地鐵站間里程查詢

     編輯:程式設計綜合問答

需求場景

開發一個地鐵查詢系統,已使用 MFC 搭配 ADO 成功連接 Access 資料庫。資料表儲存的是相鄰兩站之間的里程數據。現在需要實現:使用者輸入起點與終點,系統自動定位資料庫中的里程記錄並計算總里程輸出。

核心步驟

  1. 建立 ADO 連接:使用 _ConnectionPtr 建立連線字串,開啟 Access 資料庫。
  2. 設計查詢邏輯:因資料僅存相鄰站距離,需採用圖論最短路徑演算法(如 Dijkstra 或 BFS)在記憶體中構建站點圖,再計算任意兩站最短距離。
  3. 資料讀取:透過 _RecordsetPtr 執行 SQL 將所有邊(站點對、距離)讀入 std::vector 或鄰接表。
  4. 計算與顯示:演算法跑完後將結果回填至介面控件(如 Edit Control 或 List Control)。

關鍵程式碼片段

_RecordsetPtr pRs;
pRs.CreateInstance(__uuidof(Recordset));
pRs->Open("SELECT StartStation, EndStation, Distance FROM StationDistance", pConn.GetInterfacePtr(), adOpenStatic, adLockReadOnly, adCmdText);

while (!pRs->adoEOF) {
    CString start = pRs->GetCollect("StartStation");
    CString end = pRs->GetCollect("EndStation");
    double dist = pRs->GetCollect("Distance");
    // 建立圖結構
    graph[start].push_back({end, dist});
    graph[end].push_back({start, dist}); // 雙向
    pRs->MoveNext();
}

進階建議

  • 若站點數較多,考慮將圖結構序列化快取,避免每次查詢重讀資料庫。
  • 使用 CComboBox 綁定站點清單,提升使用者體驗。
  • 錯誤處理:包裝 _com_error 捕捉 ADO 例外。

參考資源

更完整的 MFC+ADO 範例可參考:百度經驗連結

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