• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

    作者: 時間:2011-05-09 來源:網絡 收藏

      3.1 sqlite3數據庫的移植

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

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

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

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

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

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

      3.2 下sqlite3的C語言開發

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

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

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

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


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 陵川县| 景德镇市| 镶黄旗| 宜章县| 成安县| 平果县| 凉山| 吴堡县| 新干县| 石棉县| 沽源县| 鹤庆县| 台北县| 林西县| 巴林右旗| 盘山县| 嘉鱼县| 长武县| 时尚| 崇仁县| 十堰市| 仁寿县| 漳州市| 湟源县| 西充县| 达拉特旗| 化州市| 南丰县| 阳春市| 绥德县| 马公市| 海淀区| 阿荣旗| 海兴县| 泸溪县| 洛宁县| 增城市| 武定县| 上蔡县| 枞阳县| 宁津县|