<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > RFID安檢系統的嵌入式Linux解決方案

RFID安檢系統的嵌入式Linux解決方案

作者: 時(shí)間:2011-05-09 來(lái)源:網(wǎng)絡(luò ) 收藏

  3.1 sqlite3數據庫的移植

  sqlite3數據庫的移植過(guò)程如下所述:
  (1)首先從sqlite官網(wǎng)上下載最新的sqlite3源碼包;

  (2)解壓源碼包,并進(jìn)入解壓目錄:
  tar -zxvf sqlite-3.6.23.1.tar.gz
  cd sqlite-3.6.23.1

  (3)配置Configure腳本,使用相關(guān)選項生成編譯文件Makefile文件:
  ./configure–-enable-share –-prefix=./sqlite-3.6.23.1/result –-host=arm-linux
  選項 -enable-share指定使用的共享庫
  選項 -prefix指定了安裝目錄為./sqlite-3.6.23.1/result
  選項 -host指定了編譯環(huán)境為目標機為arm的交叉編譯環(huán)境

  (4)交叉編譯,生成終端下數據庫的管理程序和庫文件, 最終在result目錄下得到數據庫管理程序sqlite3(相當于Windows下Access程序),提供編程所需的API的動(dòng)態(tài)庫libsqlite3.so.0.8.6,編程所需的頭文件sqlite3ext.h sqlite3.h。交叉編譯的命令如下:
  Make
  Make install

  (5)將數據庫管理程序sqlite3、提供編程所需的API的動(dòng)態(tài)庫libsqlite3.so.0.8.6及其1個(gè)軟鏈接拷貝到開(kāi)發(fā)板根文件相應位置,分別在終端的/usr/bin和/usr/lib這兩個(gè)目錄下,命令如下:
  Cp result/bin/sqlite3 /arm-linux/usr/bin
  Cp –l result/lib/libsqlite3.so* /arm-linux/usr/lib

  (6)為了能在開(kāi)發(fā)機上編譯,調用了sqlite3數據庫的API的應用程序,需要將動(dòng)態(tài)庫libsqlite3.so.0.8.6及其2個(gè)軟鏈接、2個(gè)頭文件拷貝到交叉編譯工具鏈所在目錄的適當位置,至此sqlite3數據庫的移植和開(kāi)發(fā)環(huán)境的配置已完成。只要輸入SQL語(yǔ)言便可以進(jìn)行相關(guān)操作。

  3.2 下sqlite3的C語(yǔ)言開(kāi)發(fā)

  sqlite3里最常用到的是sqlite3 *類(lèi)型。從數據庫打開(kāi)時(shí)開(kāi)始,sqlite3就要為這個(gè)類(lèi)型準備好內存,直到數據庫關(guān)閉,整個(gè)過(guò)程都需要用到這個(gè)類(lèi)型。數據庫打開(kāi)時(shí)起,這個(gè)類(lèi)型的變量就代表了所要操作的數據庫。
  (1)打開(kāi)數據庫API接口函數
  int sqlite3_open(文件名, sqlite3 *);
  用這個(gè)函數開(kāi)始數據庫操作。需要傳入兩個(gè)參數,其中之一是數據庫文件名,例如:/home/test.db文件名不需要一定存在,如果此文件不存在,sqlite3會(huì )自動(dòng)建立;如果存在,就嘗試把它當數據庫文件打開(kāi)。
  sqlite3 * 參數即前面提到的關(guān)鍵數據結構。函數返回值表示操作是否正確,如果是SQLITE_OK則表示操作正常。相關(guān)的返回值sqlite3定義了一些宏,具體這些宏的含義可以參考sqlite3.h文件。

  (2)關(guān)閉數據庫API接口函數
  int sqlite3_close(sqlite3 *);
  如果前面用sqlite3_open開(kāi)啟了一個(gè)數據庫,結尾時(shí)不要忘了用這個(gè)函數關(guān)閉數據庫。

  (3)執行SQL語(yǔ)句API接口
  由于sqlite3數據庫支持SQL語(yǔ)言,因而調用C中相關(guān)執行函數就如同在終端下操作數據庫一樣方面快捷,下面是具體的API函數:
  這就是執行一條sql語(yǔ)句的函數。
  Int sqlite3_exec(sqlite3 * db, const char *sql,sqlite3_callback,Void * ,char ** errmsg);
  參數1是調用打開(kāi)數據庫函數sqlite3_open()打開(kāi)的數據庫對象。
  參數2 是一條待執行的SQL語(yǔ)句,其語(yǔ)法格式同標準SQL語(yǔ)言規范一樣,如創(chuàng )建 table時(shí)插入的記錄如下:
  create table student(id varchar(10) primary key, age smallint);
  此語(yǔ)句創(chuàng )建了名為student的表,表中定義了id(學(xué)號)和年紀兩個(gè)變量,其中id是主鍵。
  Insert into student values(12345678,21);
  此語(yǔ)句向student表中插入一組數據(12345678,21),其中學(xué)號為12345678,學(xué)生年齡為21。
  對于數據庫的其他操作,如數據庫更新、修改、查找等用法同上。
  參數3 sqlite3_callback是自定義的回調函數,對執行結果的每一行都執行一次這個(gè)函數。
  參數4 void *是調用者所提供的指針,你可以傳遞任何一個(gè)指針參數到這里,這個(gè)參數最終會(huì )傳到回調函數里,如果不需要傳遞指針給回調函數,可以填NULL。
  參數5 char ** errmsg是錯誤信息。sqlite3里面有很多固定的錯誤信息。執行sqlite3_exec之后,如果執行失敗則可以查閱這個(gè)指針,即可知道執行過(guò)程中錯誤發(fā)生的位置。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>