基于Linux操作系統(tǒng)的射頻識(shí)別安檢設(shè)計(jì)方案
(4)交叉編譯,生成嵌入式終端下數(shù)據(jù)庫(kù)的管理程序和庫(kù)文件, 最終在result目錄下得到數(shù)據(jù)庫(kù)管理程序sqlite3(相當(dāng)于Windows下Access程序),提供編程所需的API的動(dòng)態(tài)庫(kù)libsqlite3.so.0.8.6,編程所需的頭文件sqlite3ext.h sqlite3.h。交叉編譯的命令如下:
Make
Make install
?。?)將數(shù)據(jù)庫(kù)管理程序sqlite3、提供編程所需的API的動(dòng)態(tài)庫(kù)libsqlite3.so.0.8.6及其1個(gè)軟鏈接拷貝到開發(fā)板根文件系統(tǒng)相應(yīng)位置,分別在嵌入式終端的/usr/bin和/usr/lib這兩個(gè)目錄下,命令如下:
Cp result/bin/sqlite3 /arm-Linux/usr/bin
Cp –l result/lib/libsqlite3.so* /arm-linux/usr/lib
?。?)為了能在開發(fā)機(jī)上編譯,調(diào)用了sqlite3數(shù)據(jù)庫(kù)的API的應(yīng)用程序,需要將動(dòng)態(tài)庫(kù)libsqlite3.so.0.8.6及其2個(gè)軟鏈接、2個(gè)頭文件拷貝到交叉編譯工具鏈所在目錄的適當(dāng)位置,至此sqlite3數(shù)據(jù)庫(kù)的移植和開發(fā)環(huán)境的配置已完成。只要輸入SQL語(yǔ)言便可以進(jìn)行相關(guān)操作。
3.2 Linux下sqlite3的C語(yǔ)言開發(fā)
sqlite3里最常用到的是sqlite3 *類型。從數(shù)據(jù)庫(kù)打開時(shí)開始,sqlite3就要為這個(gè)類型準(zhǔn)備好內(nèi)存,直到數(shù)據(jù)庫(kù)關(guān)閉,整個(gè)過(guò)程都需要用到這個(gè)類型。數(shù)據(jù)庫(kù)打開時(shí)起,這個(gè)類型的變量就代表了所要操作的數(shù)據(jù)庫(kù)。
?。?)打開數(shù)據(jù)庫(kù)API接口函數(shù)
int sqlite3_open(文件名, sqlite3 *);
用這個(gè)函數(shù)開始數(shù)據(jù)庫(kù)操作。需要傳入兩個(gè)參數(shù),其中之一是數(shù)據(jù)庫(kù)文件名,例如:/home/test.db文件名不需要一定存在,如果此文件不存在,sqlite3會(huì)自動(dòng)建立;如果存在,就嘗試把它當(dāng)數(shù)據(jù)庫(kù)文件打開。
sqlite3 * 參數(shù)即前面提到的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。函數(shù)返回值表示操作是否正確,如果是SQLITE_OK則表示操作正常。相關(guān)的返回值sqlite3定義了一些宏,具體這些宏的含義可以參考sqlite3.h文件。
(2)關(guān)閉數(shù)據(jù)庫(kù)API接口函數(shù)
int sqlite3_close(sqlite3 *);
如果前面用sqlite3_open開啟了一個(gè)數(shù)據(jù)庫(kù),結(jié)尾時(shí)不要忘了用這個(gè)函數(shù)關(guān)閉數(shù)據(jù)庫(kù)。
(3)執(zhí)行SQL語(yǔ)句API接口
由于嵌入式sqlite3數(shù)據(jù)庫(kù)支持SQL語(yǔ)言,因而調(diào)用C中相關(guān)執(zhí)行函數(shù)就如同在終端下操作數(shù)據(jù)庫(kù)一樣方面快捷,下面是具體的API函數(shù):
這就是執(zhí)行一條sql語(yǔ)句的函數(shù)。
Int sqlite3_exec(sqlite3 * db, const char *sql,sqlite3_callback,Void * ,char ** errmsg);
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論