zoukankan      html  css  js  c++  java
  • 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;"

  • 相关阅读:
    springmvc
    POJ 3683 Priest John's Busiest Day
    POJ 3678 Katu Puzzle
    HDU 1815 Building roads
    CDOJ UESTC 1220 The Battle of Guandu
    HDU 3715 Go Deeper
    HDU 3622 Bomb Game
    POJ 3207 Ikki's Story IV
    POJ 3648 Wedding
    HDU 1814 Peaceful Commission
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2520465.html
Copyright © 2011-2022 走看看