文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>嵌入式数据库SQLite3相关操作---数据库移植篇

嵌入式数据库SQLite3相关操作---数据库移植篇

时间:2011-04-11  来源:☆&寒 烟☆

一.准备工作:

主机环境:虚拟机下Fedora9

交叉编译器:arm-linux-gcc-4.4.3

软件包:sqlite-3.6.18.tar.bz2

把sqlite-3.6.18.tar.bz2解压到主机的/nfs_dir/目录下,并重命名为sqlite,在同一级目录下在新建目录sqlite_arm,这个目录来放编译后产生的文件。

二.配置SQLite

在sqlite目录终端下进行如下配置:

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

make

make install

经过上述的命令将编译好的文件安装到sqlite-arm目录下,在sqlite-arm目录下会生成bin、lib、include目录,bin目录下是sqlite3可执行文件,lib目录下包含运行sqlite3所依赖的库,include目录下是sqlite的C语言API的头文件,编程时会用到。

三.移植

分别将bin下的文件下载到开发板的/usr/bin目录中,lib下的所有文件下载到开发板的/usr/lib目录中即可。注意这里说的是所有。包括符号连接,即一个不留:

cp –dr ./lib/ /usr/lib/

四.登录开发板的Linux,执行:

sqlite3 demo.db

sqlite3是一个sqlite的命令行访问程序,demo.db是新建的数据库的名字,必须以db作后缀。如果能进行下边的操作说明一切OK.

#sqlite3 test.db
SQLite version 3.6.18
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table film (number,name);
sqlite> insert into film values (1,'aaa');
sqlite> insert into film values (2,'bbb');
sqlite> select * from film;
1|aaa
2|bbb
sqlite>.quit

五.测试程序

这里以SQLite官方站点http://sqlite.org的quick start文档中的测试程序为例对移植到ARM-Linux上的SQLite3进行测试。该程序清单如下:

#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]);

    }

    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;

}

使用如下命令编译测试程序:

arm-linux-gcc -o test test.c -lsqlite3 -L/nfs/sqlite/sqlite_arm/lib -I/nfs/sqlite/sqlite_arm/include

使用如下命令去掉调试信息:

arm-linux-strip test

六.在上面新建的数据库目录下测试:
#./test_sqlite   test.db   "select * from film"  

应该会看到如下的结果:
number = 1
name = aaa
number = 2
name = bbb

好了,挺简单的吧,sqlite也是一个关系性数据库,可以做的其实也是比较少的,或者说要学的新东西还是挺少的,以前的数据库连oracle,DB2都玩的转,何况这个小家伙,塞牙缝都不够啊.下节我们会讲讲sqlite3中的一些基本的编程接口,有了这些接口,C编程问题还不是手到擒来啊.

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载