在C++中使用sqlite的示例(從下載、編譯、工程建立、配置、測試代碼編寫全方位介紹)_第1頁
在C++中使用sqlite的示例(從下載、編譯、工程建立、配置、測試代碼編寫全方位介紹)_第2頁
在C++中使用sqlite的示例(從下載、編譯、工程建立、配置、測試代碼編寫全方位介紹)_第3頁
在C++中使用sqlite的示例(從下載、編譯、工程建立、配置、測試代碼編寫全方位介紹)_第4頁
在C++中使用sqlite的示例(從下載、編譯、工程建立、配置、測試代碼編寫全方位介紹)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論