1.配置下载SQLite3
Utilities----->
database------>
sqlite2-cli............ SQLite (v3.x)database engine (cli)
openwrt系统选着编译libpthread进去,以支持线程库
Basesystem ------->
<*>libthread……………………POSIX thread library
如果默认选项不是自己需要的数据库版本
*************************************************************************************************************************
2、修改支持sqlite3,vim feeds/packages/libs/sqlite3/Makefile
将版本号修改为sqlite3和编译之后拷贝的库的名字
PKG_NAME:=sqlite3
PKG_VERSION:=3.6.17
PKG_RELEASE:=3
下载新版本的openwrt 可以不修改,也不建议修改
*******************************************************************************************************************************
2.编译安装mips库
进入源码文件解压SQLite3,进入到该目录执行
./configure --host=mips-openwrt-linux --prefix=/home/linux64/openwrt/openwrt/dl/sqlite-autoconf-3081101/sqlite_mips
make
sudo make install
可以看到生成一个sqlite_mips文件夹内容如下
其中include 为相应头文件,lib为相应库文件
3.编译SQLite程序
我用C语言封装了SQLite3的程序如下
#include
#include
#include
int callback(void *p,int n,char **f_value,char **f_name)//n代表了表中的列数 f_value
{
int i;
if(*(int *)p == 1)
{
for(i = 0;i < n;i ++)
{
printf("%s\t",f_name[i]);
}
printf("\n");
*(int *)p = 0;
}
for(i = 0;i < n;i ++)
{
printf("%s\t",f_value[i]);
}
printf("\n");
return 0;
}
int main(int argc, const char *argv[])
{
sqlite3 *db;
char *errmsg;
if(sqlite3_open("./my.db",&db) != SQLITE_OK)
{
puts(sqlite3_errmsg(db));
exit(1);
}
char sqlopt[64];
sprintf(sqlopt,"create table stu(name,id);");
if(sqlite3_exec(db,sqlopt,NULL,NULL,&errmsg) != SQLITE_OK)
{
puts(errmsg);
exit(1);
}
#if 0
sprintf(sqlopt,"insert into stu values('lxs',1000);");
if(sqlite3_exec(db,sqlopt,NULL,NULL,&errmsg) != SQLITE_OK)
{
puts(errmsg);
exit(1);
}
#endif
char name[15];
int id;
int i;
for(i = 0;i < 2;i ++)
{
printf("请输入数据:");
scanf("%s%d",name,&id);
sprintf(sqlopt,"insert into stu values('%s',%d);",name,id);
sqlite3_exec(db,sqlopt,NULL,NULL,&errmsg);
}
int a = 1;
sprintf(sqlopt,"select * from stu;");
if(sqlite3_exec(db,sqlopt,callback,&a,&errmsg) != SQLITE_OK)
{
puts(errmsg);
exit(1);
}
char **val;// char *val[];
int r;
int c;
sprintf(sqlopt,"select * from stu;");
if(sqlite3_get_table(db,sqlopt,&val,&r,&c,&errmsg) != SQLITE_OK)
//r代表数据的行数,c代表列数
{
puts(errmsg);
exit(1);
}
for(i = 0;i < c;i ++)
{
printf("%s\t",val[i]);
}
printf("\n");
int count = 0;
for(i = c;i < (r + 1) * c;i ++)
{
printf("%s\t",val[i]);
count ++;
if(count % c == 0)
printf("\n");
}
return 0;
}
编译该程序
mips-openwrt-linux-gcc sqlite.c -lsqlite3 -I ../sqlite_mips/include/ -L ../sqlite_mips/lib/ -lsqlite3
-I :是指定刚才生成的头文件 -L 是生成的库文件即.so文件 格式为mips
4.拷贝到路由器运行如下
可以看到生成了my.db