(1)以下#开头的是在开发板终端命令
# cd /home
# ls
adc fadc shyi sqlite-arm
# cd sqlite-arm/
# ls
bin include lib
# cd bin/
# ls
sqlite3
# ./sqlite3
SQLite version 3.6.1
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
这时表示成功,不过此时再也不能做其它事了,只有重启开发板。
(2)下面,编写两个连接sqlite数据库的C程序,在fs2410上运行:
测试程序一:
/rootfs/filesystem/home# vim test1.c (主机上编写哦)
#include <stdio.h> int main(void) rc = sqlite3_open("test.db",&db); if(rc) { s\n",sqlite3_errmsg(db)); sqlite3_close(db); return 0;
#include "sqlite3.h"
{
sqlite3 *db = NULL;
int rc;
fprintf(stderr,"Can't open database: %
sqlite3_close(db);
exit(1);
}
else {
printf("Open test.db successfully!\n");
}
}
交叉编译:
/rootfs/filesystem/home# arm-linux-gnu-gcc -I./sqlite-arm/include/ -L./sqlite-arm/lib/ test.c -o test -lsqlite3
-I指定要包含的头文件路径,-L指定动态库的路径,-lsqlite3动态库的名字。在终端进入根文件系统的/home目录中执行:
# ./test
Open test.db successfully!
这时会出现一个test.db文件。
我们再写个包含连接数据库,创建表,插入数据等SQL语句的C语言程序。
测试程序二:
/rootfs/filesystem/home# vim test2.c (这是官方测试程序,主机上编写哦)
#include <stdio.h> **azColName) "NULL"); int main(int argc, char **argv) if (argc != 3) { statement\n", arg sqlite3_errmsg(d
#include "sqlite3.h"
static int callback(void *NotUsed, int argc, char **argv, char
{
int i;
for (i = 0; i < argc; i++) {
printf("%s = %s\n", azColName, argv[i] ? argv[i] :
}
printf("\n");
return 0;
}
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
fprintf(stderr, "Usage: %s database_name SQL-
v[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if (rc) {
fprintf(stderr, "Can't open database: %s\n",
b));
sqlite3_close(db);
exit(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;
}
交叉编译:
/rootfs/filesystem/home# arm-linux-gnu-gcc -I./sqlite-arm/include/ -L./sqlite-arm/lib/ test2.c -o test2 -lsqlite3
接下来就可以测试test程序了。test程序接受两个参数:第一个参数为数据库文件名,第二个参数为要执行的SQL语句。程序中与SQLite3的API相关的地方主要有四个:第27行的sqlite3_open(),第33行的sqlite3_exec(),第30行和第38行的sqlite3_close(),第36行的sqlite3_free()。关于SQLite3的API接口请参考上几篇文章。
下面是测试test程序的完整过程
# ./test2 test.db "create table tb(name varchar(10),number smallint);"
# ./test2 test.db "insert into tb values('caoyi',1);"
# ./test2 test.db "insert into tb values('huayun',2);"
# ./test2 test.db "select * from tb;"
@ = caoyi
@ = 1