电竞比分网-中国电竞赛事及体育赛事平台

分享

MFC采用ODBC訪問SQLite3

 紫殿 2021-07-17

操作系統(tǒng):windows 10企業(yè)版 LTSC

編譯器:en VS2015 enterprise(這個關系應該不大)

SQLite3版本: V3.17.0

SQLite3封裝類庫可以用老外寫的:  有人做過測試代碼見

1、Kompex SQLite Wrapper(目前正在使用的封裝庫)

2、SQLiteWrapper(這個沒去測試,應該也沒問題)

A、安裝SQLite3的ODBC驅(qū)動(32位):DevartODBCSQLite.exe 這個驅(qū)動要分,在網(wǎng)上自己找一下。這個驅(qū)動好像有時間限制。后來又找了個SQLiteODBC驅(qū)動。我當時下載的忘記是哪個網(wǎng)址了。自己去找呀。實在找不到就站內(nèi)信或者留言郵箱。

B、加載 C:\Program Files (x86)\Common Files\system\ado\msado15.dll 得用32位的,應該64位那個位置也有一個這個dll。64位C:\Program Files\Common Files\system\ado\msado15.dll 

加載過程得在stdafx.h這個文件中 

加入#import "C:\Program Files (x86)\Common Files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")這句。或者在CDbMFCGrid這個類的頭文件順加入這句也行。測試了好像沒問題。

C、初始化COM:

        CoUninitialize();

HRESULT hr = CoInitializeEx (NULL, COINIT_MULTITHREADED);

//m_bComInitialized = AfxOleInit();

m_bComInitialized = SUCCEEDED (hr);

// If we failed to initialize COM, there isn't much we can do so 

// return FALSE.  This will prevent application from starting.

if (!m_bComInitialized){做一些錯誤處理工作}

D、綁定網(wǎng)格類:

下載地址 :Binding MFC Grid to database. 下載有兩個文件里面有一些錯誤,修改下就可以了。主要修改頭文件的#include路徑。因為這個類是按MFC Grid control 2.27作為繼承類來做的。到時要用到綁定數(shù)據(jù)源的問題。cpp文件有幾個地主要改一下,把錯誤的地方全部換成PositionEnum這個類型就可以了。還有對int CDbMFCGrid::Bind(void)函數(shù)進行修改。

//hr = m_pConnection->Open((_bstr_t)m_strDataSource,L"", L"", -1);//將這行改成以下的。

hr = m_pConnection->Open((_bstr_t)m_strDataSource, _bstr_t(""), _bstr_t(""), adOpenUnspecified);

E、MFC Grid control 2.27的建立過程這邊就不說明了按步驟來就行了。注意在創(chuàng)建對象時采用CDbMFCGrid m_GridLook;   cunstum control還是使用MFCGridCtrl。

F、接下來是查詢按鈕

temp.Format(_T("SELECT * FROM taskend WHERE MachineNo = '%d' and End_Time >= '%s' and End_Time <= '%s' ORDER BY End_Time ASC;"),SystemData.CMacViewID, m_TimeStart, m_TimeEnd);//查詢條件

CString dbPath;

dbPath.Format(_T("DRIVER=SQLite3 ODBC Driver;Database=%sDB\\MacRoll.db;LongNames=0;Timeout=1000;NoTXN=0;SyncPragma = NORMAL; StepAPI = 0;"), SystemData.AppPath);//連接字串

SQLite3 ODBC Driver:紅色部分要在控制面板里的管理工具找得到對應的驅(qū)動,注意32位/64位之分。

m_GridLook.m_strDataSource = dbPath;

m_GridLook.m_strQuery = temp;

m_GridLook.Bind();

m_GridLook.FillGrid();

//以上為綁定數(shù)據(jù)

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多