1、获取源码包并在linux中解压
sqlite官方源码网址 :SQLite Home Page 下载完后放入linux中解压
robin@xyd-virtual-machine:~/work/231211/17day$ tar -xvf sqlite-autoconf-3240000.tar.gz
解压完成后进入解压好的源码文件中,顺序执行以下三步
1、./configure
2、make
3、sudo make install
完成后运行如下:
robin@ubuntu:~/work/sqlite-autoconf-3240000$ sqlite3 SQLite version 3.24.0 2018-06-04 19:24:41 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite>
2、增加readline功能,便于命令行的输入
步骤如下:
sudo apt-get install libreadline-dev
sudo apt-get install rlwrap;
sudo vim ~/.bashrc
在末尾添加alias sqlite3='rlwrap sqlite3'source ~/.bashrc
注意:退出时记得保存:wq
上述完成后,再使用sqlite3命令行时便可以上下调出历史记录,也可左右移动光标。
3、 sqlite3命令行相关操作
创建一个数据库my.db
robin@ubuntu:~/work/test_prj$ sqlite3 my.db SQLite version 3.24.0 2018-06-04 19:24:41
创建一个表stu
sqlite> create table stu(char name[10]); sqlite> .table stu
关于sqlite3命令行的操作还有如下:
.quit .exit
.schema 表名
.tables
.headers on
.mode columns
退出数据库
查看表的结构,即表头信息
查看当前数据库文件下所有的表名
显示表头
以列的方式显示
4、sql语句的增删改查
create table stu (name char[20], age int, score float);
insert into stu values(‘rose’,18,77.5);
select * from stu;
update stu set score=0 where sname='rose';
delete from stu where name='rose'
以上举例为基础操作,如需要时可复习sql语句的相关写法
5、sqlite库函数的使用
int sqlite3_open( const char *filename, sqlite3 **ppDb );
参数
const char *filename
:
- 这是要打开的 SQLite 数据库文件的文件名。它可以是绝对路径或相对路径。
- 如果文件不存在,SQLite 会尝试创建一个新的数据库文件。
- 如果文件已经存在,SQLite 将尝试打开并连接到该数据库。
sqlite3 **ppDb
:
- 这是一个指向
sqlite3
指针的指针。- 如果函数调用成功,这个指针会被设置为一个指向新打开(或创建的)数据库的
sqlite3
结构的指针。- 你可以使用这个指针来执行后续的数据库操作,比如执行 SQL 语句。
返回值
int
:
- 如果成功打开或创建了数据库,函数返回
SQLITE_OK
(其值为 0)。- 如果发生错误,函数返回一个非零的错误代码。这些错误代码是 SQLite 定义的,可以用来确定发生了什么类型的错误。
int sqlite3_close(sqlite3 *db);
int sqlite3_exec(sqlite3 *db,char *sql,int (*callback)(void *arg,int col,char **str,char **name),void *arg,char **errmsg);
参数
sqlite3 *db
:
- 这是一个指向已打开的 SQLite 数据库的
sqlite3
结构的指针。这个指针通常是通过sqlite3_open
函数获取的。
char *sql
:
- 这是你要执行的 SQL 语句的字符串。你可以执行一个单独的 SQL 语句,也可以执行由分号(;)分隔的多个 SQL 语句。
int (*callback)(void *arg, int col, char **str, char **name)
:
- 这是一个回调函数,用于处理查询结果(例如 SELECT 语句的结果)。如果你执行的是一个查询,并且你希望获取查询结果,你应该提供一个有效的回调函数。
- 对于非查询语句(如 INSERT、UPDATE 或 DELETE),这个回调函数通常是
NULL
。- 回调函数的参数包括:
void *arg
:传递给回调函数的用户定义的参数。int col
:当前列的索引(从 0 开始)。char **str
:包含当前列数据的字符串的指针。char **name
:包含当前列名称的字符串的指针。
void *arg
:
- 这是一个用户定义的参数,可以传递给回调函数。这对于在回调函数中传递额外的上下文信息很有用。
char **errmsg
:
- 这是一个指向字符指针的指针,用于接收任何错误消息。如果执行 SQL 语句时出现错误,这个指针将指向一个包含错误描述的字符串。如果你不关心错误消息,可以将这个参数设置为
NULL
。返回值
int
:
- 如果 SQL 语句成功执行,函数返回
SQLITE_OK
(其值为 0)。- 如果发生错误,函数返回一个非零的错误代码。这些错误代码是 SQLite 定义的,可以用来确定发生了什么类型的错误。
int sqlite3_get_table(mydb,"select * from stu;",&result,&nrows,&nclos,&errmsg);
参数
sqlite3 *mydb:
- 这是一个指向已打开的 SQLite 数据库的
sqlite3
结构的指针。
const char *sql
:
- 这是你要执行的 SQL 查询字符串。
char **resultp
:
- 这是一个指向字符指针的指针的指针,用于接收查询结果。函数执行成功后,这个指针将指向一个动态分配的字符串数组,其中包含查询结果。
int *nrowsp
:
- 这是一个指向整数的指针,用于接收查询结果中的行数。
int *ncolsp
:
- 这是一个指向整数的指针,用于接收查询结果中的列数。
char **errmsgp
:
- 这是一个指向字符指针的指针,用于接收任何错误消息。如果执行 SQL 查询时出现错误,这个指针将指向一个包含错误描述的字符串。如果不关心错误消息,可以将这个参数设置为
NULL
。返回值
- 函数返回
SQLITE_OK
(其值为 0)表示成功,如果发生错误则返回非零错误代码。
补充sqlite3_get_table函数遍历打印结果方法:
// 遍历结果并打印 for (int i = 0; i < nrows; i++) { for (int j = 0; j < ncols; j++) { printf("%s ", result[i * ncols + j]); } printf("\n"); }