Sqlite 嵌入式數據庫移植和使用


原文鏈接:

1.    源代碼的獲取

sqlite是一個功能強大、體積小運算速度快的嵌入式數據庫,采用了全C語言封裝,並提供了八十多個命令接口,可移植性強,使用方便。

下載地址:http://sqlite.org/download.html

sqlite源代碼:sqlite-3.6.17.tar.gz

2.    sqlite移植到x86 for linux

l    解壓文件

    //創建一個文件夾,將源代碼放在這個文件夾中。

mkdir /work/sqlite

cp sqlite-3.6.17.tar.gz /work/sqlite

    //解壓文件

    cd /work/sqlite

    tar xvzf sqlite-3.6.17.tar.gz

l    配置

//建立x86目錄

mkdir sqlite_x86

//打開文件

cd sqlite-3.6.17

//配置sqlite

./configure --prefix=/work/sqlite/sqlite_x86 --disable-tcl

l    編譯

make

l    安裝

make install

l    測試

當安裝完成以后,安裝文件會安裝在/work/sqlite/sqlite_x86目錄中,一種產生了,lib,include和bin三個文件夾,分別是庫文件,頭文件和可執行文件。

到這里是不是有點躍躍欲試了,是的,我們可以測試sqlite了,當文件安裝后,我們可以直接通過安裝好的sqlite3來實現。

cd sqlite_x86/bin

./sqlite3 test.db //打開或創建test.db數據庫文件

create table test (id integer primary key, value text); 

insert into test (value) values('hxl'); 

insert into test (value) values('sqlite'); 

insert into test (value) values('test'); 

insert into test (value) values('for'); 

insert into test (value) values('linux'); 

//到此數據庫基本家里就完成了,來看看數據庫里面的文件吧

.mode col

.headers on //打印出數據庫的表頭

select * from test; //顯示數據庫中的所有文件

.exit //退出

3.    sqlite移植到arm

l    配置

//建立x86目錄

mkdir http://www.cnblogs.com/sqlite_arm

//打開文件

cd http://www.cnblogs.com/sqlite-3.6.17

//配置sqlite

./configure --prefix=/work/sqlite/sqlite_arm --disable-tcl —host=arm-linux

l    編譯

make

l    安裝

make install

l    測試

當安裝完成以后,安裝文件會安裝在/work/sqlite/sqlite_x86目錄中,一種產生了,lib,include和bin三個文件夾,分別是庫文件,頭文件和可執行文件。

將lib中的文件復制到開發板的lib中,現在編寫一個C文件test.c來驅動它。


#include <stdio.h>
  #include <sqlite3.h>
  
  static int callback(void *NotUsed, int argc, char **argv, char **azColName){
    int i;
    for(i=0; i<argc; i++){
      printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return 0;
  }
  
  int main(int argc, char **argv){
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;
  
    if( argc!=3 ){
      fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
      return(1);
    }
    rc = sqlite3_open(argv[1], &db);
    if( rc ){
      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
      sqlite3_close(db);
      return(1);
    }
    rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
    if( rc!=SQLITE_OK ){
      fprintf(stderr, "SQL error: %s\n", zErrMsg);
      sqlite3_free(zErrMsg);
    }
    sqlite3_close(db);
    return 0;
  }

 非嵌入式下編譯:

      gcc -g test.c -o test -lsqlite3

上面的代碼是sqlite官方的測試代碼,雖然很簡單但是也很強大,一般應用都夠了,再了解一下sqlite的語法就可以實現強大的功能了,編譯方法如下,在這里假設你已經安裝好了arm-linux-gcc,我采用的是arm-linux-gcc-4.3.2,編譯方法如下:

arm-linux-gcc -o test test.c -sqlite3 -L/work/sqlite/sqlite_arm/lib -I/work/sqlite/sqlite_arm/include

將數據庫復制在當前文件夾,測試方法:

./test ./test test.db "select * from test;"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM