Sqlite 嵌入式数据库移植和使用

1.    源代码的获取
    sqlite是一个功能强大、体积小运算速度快的嵌入式数据库,采用了全C语言封装,并提供了八十多个命令接口,可移植性强,使用方便。

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

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

2.  sqlite移植到x86 for linux

    2.l 解压文件
    //创建一个文件夹,将源代码放在这个文件夹中。
    mkdir /home/database
    cp sqlite-3.6.17.tar.gz /home/database/
    //解压文件
    cd /home/database
    tar xvzf sqlite-3.6.17.tar.gz
    
    2.2配置
   //建立x86目录
    mkdir sqlite-ix86-linux
   //打开文件
   cd sqlite-3.6.17
   //配置sqlite 
   ./configure --prefix=/home/database/sqlite-ix86-linux --disable-tcl

   2.3 编译
     make
   2.4安装
    make install

     2.5测试   
    2.5.1在/root/.bashrc文件中添加路径:
        export PATH=/home/database/sqlite-ix86-linux/bin:$PATH
        #sqlite3 -version
          3.6.22
        成功看到版本即认为是安装成功和路径设置成功






   2.5.2 建立数据库
      当安装完成以后,安装文件会安装在/home/database/sqlite-ix86-linux目录中,一种产生了,lib,include和bin三个文件夹,
   分别是库文件,头文件和可执行文件。到这里是不是有点跃跃欲试了,是的,我们可以测试sqlite了,当文件安装后,
   我们可以直接通过安装好的sqlite3来实现。


    cd /home/database/sqlite-ix86-linux/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 //退出

    2.5.3 在应用程序中测试,新建文件夹Test,把刚才生成的test.db拷贝进来,
         新建文件sqliteTest.c,添加如下内容

==================sqliteTest.c=======================================

#include <stdio.h>
#include "sqlite3.h"//"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]);
}

rc = sqlite3_open(argv[1], &db);
if( rc )
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);


if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}

sqlite3_close(db);
return 0;

}

==================end of sqliteTest.c=======================================

编译:
  gcc sqliteTest.c -lsqlite3 -L/home/database/sqlite-ix86-linux/lib -I/home/database/sqlite-ix86-linux/include
  编译生成a.out
  可能提示的错误:
  1. Connot find -lsqlite3 则是-L路径没设对
  2. error:sqlite3.h没找到
     error:'sqlite3' undeclared(first use in this funtion)
     则是-I路径没有设对设对


运行: ./a.out test.db "select * from test;"

显示如下:

  root@xiangzi-desktop:/home/database/test# ./a.out test.db "select * from test"  

id = 1
value = hxl

id = 2
value = sqlite

id = 3
value = test
id = 4
value = for

id = 5
value = linux
root@xiangzi-desktop:/home/database/test# 


3.    sqlite移植到arm
     3.1 配置
     //建立x86目录
     mkdir /home/database/sqlite-arm-linux
    //打开文件
    cd /home/database/sqlite-3.6.17
    //配置sqlite
    ./configure  --prefix=/home/database/sqlite-arm-linux  --disable-tcl --host=arm-linux

     3.2    编译
            make
     3.3  安装
            make install


      3.4   测试

       把上面那个测试程序修改编译器即可,省略...

================================================

参考:
1. Sqlite 嵌入式数据库移植和使用
     http://bbs.ednchina.com/BLOG_ARTICLE_253793.HTM
2. Sqlite学习笔记
    http://wanqiufeng.blog.51cto.com/409430/472905
3. 关于Sqlite3的使用
     http://blog.sina.com.cn/s/blog_3f2fa9610100rq4t.html
4. 嵌入式数据库Sqlite移植教程
     http://www.elecfans.com/emb/xitong/20100311186619.html
5. SQLite
     http://www.helplib.net/s/sqlite/9/2.shtml


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值