天天看點

在MFC中支援sqlite3

在vc環境下支援sqlite3的方法有很多,sqlite官網也有推薦sqlitewrappers清單,我選用的是CppSqlite 建立MFC工程的步驟我就不贅述了,以下操作均假設你已經建立好了一個MFC工程 測試環境:windows7 編譯環境:Visual Studio 2015 添加步驟: 1、下載下傳壓縮檔案,我下載下傳的是最新的版本“Download CppSQLite 3.2 demo projects, source and sqlite3.dll for SQLite 3.4.0 - 252 KB”  ,該版本支援SQLite3 3.4 2、解壓,将common/檔案夾中的CppSQLite3.cpp、CppSQLite3.h、sqlite3.dll、sqlite3.lib四個檔案拷貝到你的工程目錄下 3、項目->頭檔案->添加->現有項->在目錄中找到CppSQLite3.h并添加;項目->源檔案->添加->現有項->找到CppSQLite3.cpp并添加 4、項目右鍵->屬性->連結器->輸入中填入sqlite3.lib,自此 你的工程就支援sqlite3啦 類封裝說明: 介紹幾個常用的類:CppSQLiteDB、CppSQLiteQuery

1、CppSQLiteDB

該類主要是對資料庫檔案的基本操作,包含打開關閉查詢等指令,介紹幾個常用的函數 a)、open(xxx.db) 功能:打開一個資料庫檔案 參數:char*類型,資料庫檔案名 說明:如果該db檔案不存在,會建立 b)、close() 功能:關閉資料庫檔案 參數:無 說明:該函數不需要我們手動調用,CppSQLiteDB的析構函數中會調用 c)、execDML(command) 功能:用于直接執行create/drop/insert/update/delete指令(data manipulation language) 參數:char*類型,要執行的指令 說明:傳回值是操作了的行數 d)、execQuery() 功能:用于執行查詢資訊 參數:執行查詢資訊的指令 說明:傳回值是CppSQLiteQuery類 舉例: CppSQLiteQuery query = db.execQuery("select * from tablename;") 注意:最後需要手動調用query.finalize(),否則,會引起記憶體洩漏進而導緻儲存。(文檔上說的不用手動釋放,目前還沒找到原因) e)、execScalar() 功能:得到目前table的行數 參數:執行指令 說明:傳回行數 舉例: int raws = db.execScalar("select count(*) from tablename;")

2、CppSQLiteQuery

CppSQLiteQuery query = db.execQuery("select * from tablename;") a)、numFields() 功能:得到目前字段數(你可以了解為列數) 參數:無 說明:得到目前的列數 b)、fieldName(int nCols) 功能:得到目前的列标題 參數:某一列的列數(從0開始) c)、fieldDeclType(int nCols) 功能:得到目前列的元素類型 參數:某一列的列數(從0開始) 這三個函數一般會這樣用:        

for (fld = 0; fld <query.numFields(); fld++)
        {
            cout <<query.fieldName(fld) << "(" <<query.fieldDeclType(fld) << ")|";
        }
        cout << endl;       

  d)、fieldValue(int nCols) 功能:得到目前列的值 參數:某一列的列數(從0開始) e)、eof() 功能:用于疊代查詢結果,與nextRow()配合使用 參數:無 說明:傳回值為TRUE時,表示已經到達查詢結果的最後一個,終止疊代即可 f)、nextRow() 功能:疊代到查詢結果的下一行,長與eof()配合使用 參數:無 這三個函數一般會這樣用:      

while (!q.eof())
        {
            cout << q.fieldValue(0) << "|";        //得到目前列的值
            cout << q.fieldValue(1) << "|" << endl;    //得到目前列的值
            q.nextRow();
        }      

轉載于:https://www.cnblogs.com/happy1006/p/10282674.html