Sqlite 嵌入式資料庫移植和使用

來源:互聯網
上載者:User

原文連結:

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;"

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.