[国嵌攻略][182][Sqlite嵌入式数据库移植]

时间:2021-08-26 06:32:36

数据库系统构成

在计算机系统中,保存数据的方式一般有两种:

1.普通文件方式

2.数据库方式

相比于普通文件方式,使用数据库来管理大批量数据具有更高的效率与安全性。

数据库系统一般由三个部分构成

1.数据库

2.数据库管理系统

3.数据库访问应用

sqlite属于数据库管理系统。在数据库中,数据都是以表的形式存在。表与表之间,可能存在关系。sql(结构化查询语言),是一种特殊的编程语言,用于访问数据库中的数据。

移植sqlite到开发板

1.解压

tar zxvf sqlite-autoconf-3070800.tar.gz

2.配置

mkdir _install

./configure –-host=arm-linux –-prefix=${PWD}/_install

3.修改Makefile

搜索-DPACKAGE_STRING=\"sqlite\ 3.7.8\"

删除3.7.8路径前空格,-DPACKAGE_STRING=\"sqlite\3.7.8\"

4.编译

make

5.安装

make install

生成的sqlite数据库管理系统在_install/bin/目录下,拷贝到.../rootfs/sbin/目录下。

生成的库函数在_install/lib/目录下,拷贝到.../rootfs/lib/目录下。

编译数据库访问应用程序

arm-linux-gcc -L .../_install/lib -lsqlite3 -I .../_install/include db.c -o db

使用数据库访问程序

1.创建

./db student.db “create talbe stu(number smallint not null primary key, name varchar(20));”

2.插入

./db student.db “insert into stu values(1, ‘xiao ming’);”   字符串用单引号

./db student.db “insert into stu values(2, ‘xiao hong’);”   字符串用单引号

3.查询

./db student.db “select * from stu where name like %xiao%;”

4.删除

./db student.db “delete from stu where number = 2;”

db.c

#include <stdio.h>
#include <sqlite3.h> int main(int argc, char **argv);
static int callback(void *notUsed, int argc, char **argv, char **colName); int main(int argc, char **argv){
//检测参数项
if(argc != ){
printf("Usage:\n\t%s <database> <sql statement>\n", argv[]);
return -;
} //打开数据库
sqlite3 *db;
int isErr; isErr = sqlite3_open(argv[], &db);
if(isErr){
//显示错误值
printf("Can not open: %s", sqlite3_errmsg(db)); //关闭数据库
sqlite3_close(db); return -;
} //访问数据库
char *errMsg;
int isExec; isExec = sqlite3_exec(db, argv[], callback, , &errMsg);
if(isExec != SQLITE_OK){
//显示错误值
printf("Can not exec: %s", errMsg); //关闭数据库
sqlite3_close(db); return -;
} //关闭数据库
sqlite3_close(db); return ;
} static int callback(void *notUsed, int argc, char **argv, char **colName){
//显示回调数据
int i;
char *value; for(i = ; i < argc; i++){
printf("%s ", argv[i] ? argv[i] : "NULL");
}
printf("\n"); return ;
}