版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、在C+中使用sqlite的示例(從下載、編譯、工程建立、配置、測試代碼編寫全方位介紹)目錄1、SQLite下載與安裝12、代碼編譯23、sqlite使用工程建立34、sqlite配置45、測試代碼76、運行結(jié)果10SQLite是一個完全獨立的、不需要服務(wù)器、不要任何配置、支持SQL的、開源的文件數(shù)據(jù)庫引擎。源代碼和支持可以登錄:/本文主要介紹如何在C+中使用sqlite。 1、SQLite下載與安裝本文以3.7.4版本為例進行說明。在/下載windows平臺的3.7.4版本的sqlite。(1.)下載sqlite3
2、.dll和sqlite3.def文件,其下載地址為:/sqlite-dll-win32-x86-3070400.zip,本文直接下載到桌面下載后文件為:X,解壓后文件為:(2)下載.h/.cpp文件,其下載地址為:/sqlite-amalgamation-3070400.zip,本文直接下載到桌面,下載后文件為:,解壓后文件為:2、代碼編譯,由于SQLite下載文件中只提供了def文件而沒有提供lib文件。所以在正式使用sqlite之前需要先編譯lib文件。下面給出編譯lib文件的方法和步驟。(1) 打開V2008
3、自帶的命令行工具(本文以vs2008為例進行說明)(2) (2)打開后的界面如下:(3)在上面的命令行中輸入(注意空格):(小技巧,輸入lib /def:后可以將剛剛解壓sqlite3.def直接拖到命令行界面中,然后加上/machine:ix86)(4)輸入命令行回車:到此sqlite編譯完成.(5)編譯完成后生成sqlite3.lib、sqlite3.exp文件,該文件路徑在:C:Program FilesMicrosoft Visual Studio 9.0VC3、sqlite使用工程建立(1)打開vs2008,選擇FileNewProject.在彈出的對話框中按如下進行選擇,并在Nam
4、e中輸入工程名:TestSqlite,如下圖所示(2)單擊ok,如下圖:(3)單擊Finsh完成工程建立,如下圖:4、sqlite配置(1)將前面下載和編譯期間的.h、.lib、.cpp、.def、.dll文件分別放在inc、lib文件夾下。如下圖其中inc文件內(nèi)容為:lib文件內(nèi)容為:(2)在C/C+ General的Additional Include Directories中輸入.inc 如下圖:(3)在Linker的Additional Library Directories中輸入.lib 如下圖:(4)在Linker的Input的Additional Dependencies中輸入:
5、sqlite3.lib 如下圖:(5)單擊確定,到此sqlite配置已經(jīng)完成5、測試代碼本文給出sqlite使用的文件模式和內(nèi)存模式測試代碼。在TestSqlite.cpp中輸入如下代碼:#include stdafx.h#include sqlite3.hint testdb(void);int testdb2(void);int testdb3(void);/callback回調(diào)函數(shù) _callback_exec的編寫,其中notused為sqlite3_exec中的第四個參數(shù),第二個參數(shù)是欄的數(shù)目,第三個是欄的名字,第四個為查詢得到的值static int _callback_exec(
6、void * notused,int argc, char * argv, char * aszColName)int i;for ( i=0; iargc; i+ )printf( %s = %s/n, aszColNamei, argvi = 0 ? NUL : argvi );return 0;int _tmain(int argc, _TCHAR* argv)/文件模式testdb();testdb2();testdb3();return 0;#include #include #include sqlite3.hint testdb(void)sqlite3 *db=NULL;cha
7、r *zErrMsg = 0;int rc;/打開指定的數(shù)據(jù)庫文件,如果不存在將創(chuàng)建一個同名的數(shù)據(jù)庫文件rc = sqlite3_open(test1.db, &db);if(rc)fprintf(stderr, Cant open database: %sn, sqlite3_errmsg(db);sqlite3_close(db);return (1);elseprintf(You have opened a sqlite3 database named test1.db successfully!n);/創(chuàng)建一個表,如果該表存在,則不創(chuàng)建,并給出提示信息,存儲在zErrMsg 中char
8、 *sql = CREATE TABLE test(ID INTEGER PRIMARY KEY,AGE INTEGER,LEVEL INTEGER,NAME VARCHAR(12),SALARY REAL); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );/插入數(shù)據(jù)sql = INSERT INTO test VALUES(NULL , 1 , 1 , 201205151206, 117.9 ); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );int nrow = 0, ncolumn = 0; /查詢結(jié)
9、果集的行數(shù)、列數(shù)char *azResult; /二維數(shù)組存放結(jié)果/查詢數(shù)據(jù)sql = SELECT * FROM test ;sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );int i = 0 ;printf( row:%d column=%d n , nrow , ncolumn );printf( nThe result of querying is : n );for( i=0 ; i( nrow + 1 ) * ncolumn ; i+ )printf( azResult%d = %sn,
10、 i , azResulti );/刪除數(shù)據(jù)sql = DELETE FROM test WHERE AGE = 1 ; ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );/釋放掉azResult 的內(nèi)存空間sqlite3_free_table( azResult );sqlite3_close(db); /關(guān)閉數(shù)據(jù)庫int c=getchar();return 0;int testdb2(void)const char * sSQL = select * from t1;char * pErrMsg = 0;int ret = 0;sqlite3 *
11、db = 0;ret = sqlite3_open(./test2.db, &db);if ( ret != SQLITE_OK )fprintf(stderr, Could not open database: %s, sqlite3_errmsg(db);exit(1);printf(Successfully connected to database/n);sqlite3_exec( db, sSQL, _callback_exec, 0, &pErrMsg );if ( ret != SQLITE_OK )fprintf(stderr, SQL error: %s/n, pErrMsg
12、);sqlite3_free(pErrMsg);sqlite3_close(db);db = 0;return 0;int testdb3(void)const char * sSQL = select * from t1;char * pErrMsg = 0;int ret = 0;sqlite3 * db = 0;ret = sqlite3_open(:memory:, &db);if ( ret != SQLITE_OK )fprintf(stderr, Could not open database: %s, sqlite3_errmsg(db);exit(1);printf(Succ
13、essfully connected to database/n);char *zErrMsg = 0;char *sql = CREATE TABLE test(ID INTEGER PRIMARY KEY,AGE INTEGER,LEVEL INTEGER,NAME VARCHAR(12),SALARY REAL); ;sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );/插入數(shù)據(jù)sql = INSERT INTO test VALUES(NULL , 1 , 1 , 201205151206, 20.9 ); ;sqlite3_exec( db , s
14、ql , 0 , 0 , &zErrMsg );int nrow = 0, ncolumn = 0; /查詢結(jié)果集的行數(shù)、列數(shù)char *azResult; /二維數(shù)組存放結(jié)果/查詢數(shù)據(jù)sql = SELECT * FROM test ;sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );int i = 0 ;printf( row:%d column=%d n , nrow , ncolumn );printf( nThe result of querying is : n );for( i=0 ; i( nrow + 1 ) * ncolumn ; i+ )printf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年臨時員工派遣協(xié)議范本
- 2025年借殼上市交易合作協(xié)議
- 2025年倉儲干果堅果保管合同
- 2025年售房合同解除協(xié)議
- 2025年死因贈與合同的咨詢平臺
- 2025年食堂食材采購與社區(qū)支持農(nóng)業(yè)合同范本大全3篇
- 2025版生物質(zhì)木屑顆粒燃料買賣合同4篇
- 二零二五年度不動產(chǎn)抵押擔(dān)保物業(yè)管理合同樣本3篇
- 2025版微股東眾籌入股協(xié)議書-新能源開發(fā)項目專用3篇
- 二零二五年度科研實驗室租賃合同租金調(diào)整與設(shè)備配置補充協(xié)議
- 《中華民族多元一體格局》
- 2023年四川省綿陽市中考數(shù)學(xué)試卷
- 南安市第三次全國文物普查不可移動文物-各鄉(xiāng)鎮(zhèn)、街道分布情況登記清單(表五)
- 選煤廠安全知識培訓(xùn)課件
- 項目前期選址分析報告
- 急性肺栓塞搶救流程
- 《形象價值百萬》課件
- 紅色文化教育國內(nèi)外研究現(xiàn)狀范文十
- 中醫(yī)基礎(chǔ)理論-肝
- 小學(xué)外來人員出入校門登記表
- 《土地利用規(guī)劃學(xué)》完整課件
評論
0/150
提交評論