C++使用SQLite步驟及樣本

來源:互聯網
上載者:User

標籤:

C++使用SQLite步驟及樣本
開發環境:Windows 10+VS2013。

開發語言:C++。

  1、 下載sqlite檔案。

下載網址:http://www.sqlite.org/download.html。

SQLite版本為SQLite 3.11.1,相關檔案如下。
sqlite-dll-win32-x86-3110100.zip:包含sqlite3.def、sqlite3.dll檔案。
sqlite-amalgamation-3110100.zip:包含sqlite3.h 檔案。
sqlite-tools-win32-x86-3110100.zip:包含sqlite3.exe 檔。


2、 產生sqlite3.lib。

? sqlite-dll-win32-x86-3110100.zip檔案解壓到D:\ sqlite。
? 運行Visual Studio 2013 lib命令列程式。
? 依次執行控制台命令。

  1. cd D:\sqlite\sqlite-dll-win32-x86-3110100  
  2. D:  
  3. E:\Microsoft Visual Studio 12.0\VC\bin\lib.exe /def:sqlite3.def /machine:ix86  

即可產生sqlite3.lib檔案。

3、 建立測試資料。

? sqlite-tools-win32-x86-3110100.zip檔案解壓到D:\ sqlite。
? 啟動命令列,進入D:\ sqlite目錄。
命令依次為:

  1. cd D:\sqlite  
  2. d:  

? 建立test.db測試檔案。
建立user表。

欄位Code 欄位類型 欄位描述
id integer 主鍵,自增
name varchar(64) 使用者名稱
age integer 年齡

建立命令依次如下。

  1. D:\sqlite>sqlite3.exe test.db  
  2. SQLite version 3.7.13 2012-06-11 02:05:22  
  3. Enter ".help" for instructions  
  4. Enter SQL statements terminated with a ";"  
  5. sqlite> create table user  
  6.    ...> (  
  7.    ...> id integer primary key autoincrement,  
  8.    ...> name varchar(64),  
  9.    ...> age integer  
  10.    ...> );  
  11. sqlite> .quit  

4、 建立樣本工程

? 建立win32控制台工程SQLiteTest。
? sqlite3.h(在sqlite-amalgamation-3071300.zip壓縮包中)添加到工程。
? sqlite3.lib複製到工程檔案夾下。
? 工程屬性中添加sqlite3.lib庫依賴。
Configuration Properties->Linker->Input->Additional Dependencies添加sqlite3.lib。
? 程式碼為:

[cpp] view plain copy 
  1. /* 
  2. @brief 本程式測試sqlite資料庫的增刪改查 
  3. @date 2012-09-03 
  4. */  
  5. // SQLiteTest.cpp : Defines the entry point for the console application.  
  6. //   
  7.   
  8. #include "stdafx.h"  
  9. #include "sqlite3.h"  
  10. #include <iostream>  
  11. using namespace std;  
  12.   
  13. sqlite3 * pDB = NULL;  
  14.   
  15. //增加使用者  
  16. bool AddUser(const string& sName, const string& sAge);  
  17. //刪除使用者  
  18. bool DeleteUser(const string& sName);  
  19. //修改使用者  
  20. bool ModifyUser(const string& sName, const string& sAge);  
  21. //尋找使用者  
  22. bool SelectUser();  
  23.   
  24. int _tmain(int argc, _TCHAR* argv[])  
  25. {  
  26.     //開啟路徑採用utf-8編碼  
  27.     //如果路徑中包含中文,需要進行編碼轉換  
  28.     int nRes = sqlite3_open("D:\\sqlite\\test.db", &pDB);  
  29.     if (nRes != SQLITE_OK)  
  30.     {  
  31.         cout<<"Open database fail: "<<sqlite3_errmsg(pDB);  
  32.         goto QUIT;  
  33.     }  
  34.   
  35.     //添加“趙錢孫李”  
  36.     if (    !AddUser("zhao", "18")  
  37.         || !AddUser("qian", "19")  
  38.         || !AddUser("sun", "20")  
  39.         || !AddUser("li", "21"))  
  40.     {  
  41.         goto QUIT;  
  42.     }  
  43.   
  44.     //刪除“趙”  
  45.     if (!DeleteUser("zhao"))  
  46.     {  
  47.         goto QUIT;  
  48.     }  
  49.   
  50.     //修改“孫”  
  51.     if (!ModifyUser("sun", "15"))  
  52.     {  
  53.         goto QUIT;  
  54.     }  
  55.   
  56.     //尋找使用者  
  57.     if (!SelectUser())  
  58.     {  
  59.         goto QUIT;  
  60.     }  
  61.   
  62. QUIT:  
  63.     sqlite3_close(pDB);  
  64.   
  65.     return 0;  
  66. }  
  67.   
  68. bool AddUser(const string& sName, const string& sAge)  
  69. {  
  70.     string strSql = "";  
  71.     strSql += "insert into user(name,age)";  
  72.     strSql += "values(‘";  
  73.     strSql += sName;  
  74.     strSql += "‘,";  
  75.     strSql += sAge;  
  76.     strSql += ");";  
  77.   
  78.     char* cErrMsg;  
  79.     int nRes = sqlite3_exec(pDB , strSql.c_str() ,0 ,0, &cErrMsg);  
  80.     if (nRes != SQLITE_OK)    
  81.     {  
  82.         cout<<"add user fail: "<<cErrMsg<<endl;  
  83.         return false;  
  84.     }  
  85.     else  
  86.     {  
  87.         cout<<"add user success: "<<sName.c_str()<<"\t"<<sAge.c_str()<<endl;  
  88.     }  
  89.   
  90.     return true;  
  91. }  
  92.   
  93. bool DeleteUser(const string& sName)  
  94. {  
  95.     string strSql = "";  
  96.     strSql += "delete from user where name=‘";  
  97.     strSql += sName;  
  98.     strSql += "‘;";  
  99.   
  100.     char* cErrMsg;  
  101.     int nRes = sqlite3_exec(pDB , strSql.c_str() ,0 ,0, &cErrMsg);  
  102.     if (nRes != SQLITE_OK)    
  103.     {  
  104.         cout<<"delete user fail: "<<cErrMsg<<endl;  
  105.         return false;  
  106.     }  
  107.     else  
  108.     {  
  109.         cout<<"delete user success: "<<sName.c_str()<<endl;  
  110.     }  
  111.   
  112.     return true;  
  113. }  
  114.   
  115. bool ModifyUser(const string& sName, const string& sAge)  
  116. {  
  117.     string strSql = "";  
  118.     strSql += "update user set age =";  
  119.     strSql += sAge;  
  120.     strSql += " where name=‘";  
  121.     strSql += sName;  
  122.     strSql += "‘;";  
  123.   
  124.     char* cErrMsg;  
  125.     int nRes = sqlite3_exec(pDB , strSql.c_str() ,0 ,0, &cErrMsg);  
  126.     if (nRes != SQLITE_OK)    
  127.     {  
  128.         cout<<"modify user fail: "<<cErrMsg<<endl;  
  129.         return false;  
  130.     }  
  131.     else  
  132.     {  
  133.         cout<<"modify user success: "<<sName.c_str()<<"\t"<<sAge.c_str()<<endl;  
  134.     }  
  135.   
  136.     return true;  
  137. }  
  138.   
  139. static int UserResult(void *NotUsed, int argc, char **argv, char **azColName)  
  140. {  
  141.     for(int i = 0 ; i < argc ; i++)  
  142.     {  
  143.         cout<<azColName[i]<<" = "<<(argv[i] ? argv[i] : "NULL")<<", ";  
  144.     }  
  145.     cout<<endl;  
  146.   
  147.     return 0;  
  148. }  
  149.   
  150. bool SelectUser()  
  151. {  
  152.     char* cErrMsg;  
  153.     int res = sqlite3_exec(pDB, "select * from user;", UserResult , 0 , &cErrMsg);    
  154.   
  155.     if (res != SQLITE_OK)  
  156.     {  
  157.         cout<<"select fail: "<<cErrMsg<<endl;  
  158.         return false;  
  159.     }  
  160.   
  161.     return true;  
  162. }  


? 編譯成功後,將sqlite3.dll複製到SQLiteTest.exe同一目錄下,運行SQLiteTest.exe。
運行結果:

[plain] view plain copy 
  1. add user success: zhao  18  
  2. add user success: qian  19  
  3. add user success: sun   20  
  4. add user success: li    21  
  5. delete user success: zhao  
  6. modify user success: sun        15  
  7. id = 2, name = qian, age = 19,  
  8. id = 3, name = sun, age = 15,  
  9. id = 4, name = li, age = 21,  
5、 SQLite管理工具

可視化管理工具,推薦使用:SQLite Expert,見:http://www.sqliteexpert.com/。

C++使用SQLite步驟及樣本

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.