2014  sqlite3数据库在海思3518平台上移植学习笔记。

1.获取sqlite3最新版本。我下的版本是sqlite-autoconf-3080301.tar.gz

   官网:http://www.sqlite.org/download.html

2.解压tar -zxvf ./sqlite-autoconf-3080301.tar.gz

3.执行./configure --target=arm-hisiv200-linux --host=arm-hisiv200-linux LD=arm-hisiv200-linux-ld

   其中arm-hisiv200-linux是海思平台的交叉编译工具。

4.make
5.make install

6.完成后生成的库会在/usr/local/lib/目录下,头文件会在/usr/local/include/目录下。

  使用的时候只要libsqlite3.so库和头文件sqlite3.h、sqlite3ext.h。

7.下面列出几个sqlite3常用的函数。

(1)int sqlite3_open(const char *filename, sqlite3 **ppDb);// 数据库打开函数

(2).int sqlite3_exec(sqlite3*, const char *sql, sqlite3_callback, void *, char **errmsg ); //执行sql语句

1个参数不再说了,是前面open函数得到的指针。说了是关键数据结构。

2个参数const char *sql 是一条 sql 语句。

3个参数sqlite3_callback 是回调,当这条语句执行之后,sqlite3会去调用你提供的这个函数.

   第4个参数void * 是你所提供的指针,你可以传递任何一个指针参数到这里,这个参数最终会传到回调函数里面,如果不需要传递指针给回调函数,可以填NULL。

5个参数char ** errmsg 是错误信息。注意是指针的指针。sqlite3里面有很多固定的错误信息。执行 sqlite3_exec 之后,执行失败时可以查阅这个指针(直接 printf(“%s\n”,errmsg))得到一串字符串信息,这串信息告诉你错在什么地方。sqlite3_exec函数通过修改你传入的指针的指针,把你提供的指针指向错误提示信息,这样sqlite3_exec函数外面就可以通过这个 char*得到具体错误提示。

sqlite3_callback 和它后面的 void * 这两个位置都可以填 NULL。填NULL表示你不需要回调。比如你做 insert 操作,做 delete 操作,就没有必要使用回调。而当你做 select 时,就要使用回调,因为 sqlite3 把数据查出来,得通过回调告诉你查出了什么数据。

(3)int sqlite3_get_table(sqlite3*, const char *sql, char ***resultp, int *nrow, int *ncolumn, char **errmsg );// 不使用回调的查询表信息的函数

1个参数不再多说。
2个参数是 sql 语句,跟 sqlite3_exec 里的 sql 是一样的。是一个很普通的以/0结尾的char *字符串。
3个参数是查询结果,它依然一维数组(不要以为是二维数组,更不要以为是三维数组)。它内存布局是:第一行是字段名称,后面是紧接着是每个字段的值。下面用例子来说事。
4个参数是查询出多少条记录(即查出多少行)。
5个参数是多少个字段(多少列)。
6个参数是错误信息。

8.sqlite3没有的几个数据库操作命令

   (1)不能删除列,只能新增和更新列

   (2)不能删除数据库。