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

  • 相关阅读:
    java实现算年龄
    java实现手机尾号评分
    java实现手机尾号评分
    java实现手机尾号评分
    java实现手机尾号评分
    java实现手机尾号评分
    java实现三角螺旋阵
    Delphi ActiveForm发布全攻略
    序列化FastReport,重要提示少走弯路 good
    深入探索ScrollWindow
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2520465.html
Copyright © 2011-2022 走看看