一步一步實現C 操作SQLite資料庫

2021-06-07 12:38:50 字數 2817 閱讀 3711

sqlite,是一款輕型的資料庫,是遵守acid的關聯式關聯式資料庫,目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式裝置中,可能只需要幾百k的記憶體就夠了。它能夠支援windows/linux/unix等等主流的作業系統,同樣的**可以實現跨平台編譯,這個資料庫和微軟的access很象,都是小型的資料庫管理系統,最大的差別為sqlite不需要office的支援,可以完全開源,是真正意義上的跨平台的資料庫。

由於工作的需要,這幾天對sqlite資料庫研究一下,並使用c++對其進行了簡單的操作。中間遇到了很多問題,找到了很多資料終於解決了。總結問題,不管提高,所以把遇到的問題和解決辦法寫出來,希望對大家有用。

我下的版本為sqlite-amalgamation-3070701.zip,這個包含了主要的源**。sqlite-dll-win32-x86-3070701.zip這個是windows下的編譯好的dll檔案和def檔案,解壓縮後包含兩個檔案,sqlite3.def和sqlite3.dll。

編譯源**很簡單,新建立乙個c++空專案,把sqlite-amalgamation-3070701.zip解壓縮後的檔案拷進去,編譯、鏈結,就行了。

我的目的是把sqlite資料庫作為自己專案中的一部分,是作為嵌入的一部分使用的。這個要利用到sqlite3.dll檔案。可是原始檔只有sqlite3.def和sqlite3.dll沒有sqlite3.lib檔案,怎麼用呢?

lib檔案和dll檔案其實是差不多的,只是使用的時間不同。lib檔案使用在編譯階段dll檔案使用在執行階段。根據def檔案可以生成對應的lib檔案。以下是命令列生成lib檔案。

找到vs的安裝路徑,我的是d:\program files\,用命令列進入以下路徑。

d:\program files\microsoft visual studio 9.0\vc\bin>lib /def:sqlite3.def /machine:x86

問題一:mspdb80.dll無法找到

原因是當前路徑下沒有「msobj80.dll,mspdb80.dll,mspdbcore.dll,mspdbsrv.exe

」這四個檔案。

解決辦法:common7\ide\

下複製這四個檔案到

vc\bin\

下即可解決。

對應生成lib

檔案需要注意的是把sqlite3.def拷到上述路徑下,使用命令列生成後會產生sqlite3.lib

檔案,這個就是在程式中編譯時需要的檔案。顯示的結果為:

microsoft (r) library manager version 9.00.21022.08

正在建立庫 sqlite3.lib 

和物件 

sqlite3.exp

2:在

c++中操作

sqlite

資料庫

問題二:沒有找到sqlite3.dll,因此這個應用程式未能啟動

我在我把sqlite3.dll

,sqlite3.h

,sqlite3.lib

拷到同乙個資料夾裡,編譯時已知出現這個問題。

原來是程式執行時需要的dll

按照當前工作路徑、系統目錄的順序搜尋

dll檔案。我的

dll檔案沒有和可執行檔案在同乙個路徑下,肯定要出錯了。明白這些,把

sqlite3.dll

拷到debug

資料夾下,問題解決了。

3:演示**

主要的源**來自網上,這個是我修改過的。

[cpp]view plain

copy

#include 

using

namespace

std;  

#include "./sqlite/sqlite3.h"

#pragma comment(lib, "./sqlite/sqlite3.lib")

static

int_callback_exec(

void

* notused,

intargc, 

char

** argv, 

char

** aszcolname)  

return

0;  

}  int

main(

intargc,

char

* argv)  

printf("successfully connected to database\n"

);  

sqlite3_exec( db, ssql, _callback_exec, 0, &perrmsg );  

if( ret != sqlite_ok )  

sqlite3_close(db);  

db = 0;  

return

0;  

}  

4:

sqlite

使用小問題說明

我在命令列操作sqlite

資料庫時,進入後一直不能生成乙個資料庫,並且生成表的命令也不成功。

後來終於明白了,sqlite

命令列的形式為:

sqlite.exe  dbfile

,後面的即為資料庫名,如果不存在,在操作後會自動生成乙個資料庫名。

sqlite的

sql命令都是以「

;」為結束符,開始一直執行不成功,原來是沒有加入「

;」語句結束符號。

終於完成了乙個簡單的操作sqlite的程式。

一步一步實現FormsAuthentic驗證登入

本文不講原理,只講用法,原理性的東西網上特別多,不過還是會對一些要用到的東西進行解釋,不深入講原理。本文中用的是vs2012 net mvc 4.0。原理看這篇文章 看完這個文章絕對受益匪淺。說下登入的整個流程 使用者輸入賬號密碼 點選提交 資料提交到後台控制器 去資料庫取得使用者資料 如果登入成功...

一步一步 Sql Azure

一步一步 sql azure 1.使用 windowsazure 平台賬號登陸 2.新建sqlazure server 3.新建資料庫 4.為sql azure server 新增防火牆規則,只有將本機新增到規則裡才能從本機連線到該sqlazure server 5.連線到sql azure ser...

一步一步帶你實現virtual dom(一)

一步一步帶你實現virtual dom 一 一步一步帶你實現virtual dom 二 props和事件 要寫你自己的虛擬dom,有兩件事你必須知道。你甚至都不用翻看react的源 或者其他的基於虛擬dom的 他們 量都太大,太複雜。然而要實現乙個虛擬dom的主要部分只需要大約50行的 50行 下面...