linux下部署sqlite3及相关操作

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 );

参数

  1. const char *filename

    • 这是要打开的 SQLite 数据库文件的文件名。它可以是绝对路径或相对路径。
    • 如果文件不存在,SQLite 会尝试创建一个新的数据库文件。
    • 如果文件已经存在,SQLite 将尝试打开并连接到该数据库。
  2. 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); 

参数

  1. sqlite3 *db

    • 这是一个指向已打开的 SQLite 数据库的 sqlite3 结构的指针。这个指针通常是通过 sqlite3_open 函数获取的。
  2. char *sql

    • 这是你要执行的 SQL 语句的字符串。你可以执行一个单独的 SQL 语句,也可以执行由分号(;)分隔的多个 SQL 语句。
  3. int (*callback)(void *arg, int col, char **str, char **name)

    • 这是一个回调函数,用于处理查询结果(例如 SELECT 语句的结果)。如果你执行的是一个查询,并且你希望获取查询结果,你应该提供一个有效的回调函数。
    • 对于非查询语句(如 INSERT、UPDATE 或 DELETE),这个回调函数通常是 NULL
    • 回调函数的参数包括:
      • void *arg:传递给回调函数的用户定义的参数。
      • int col:当前列的索引(从 0 开始)。
      • char **str:包含当前列数据的字符串的指针。
      • char **name:包含当前列名称的字符串的指针。
  4. void *arg

    • 这是一个用户定义的参数,可以传递给回调函数。这对于在回调函数中传递额外的上下文信息很有用。
  5. char **errmsg

    • 这是一个指向字符指针的指针,用于接收任何错误消息。如果执行 SQL 语句时出现错误,这个指针将指向一个包含错误描述的字符串。如果你不关心错误消息,可以将这个参数设置为 NULL

返回值

  • int

    • 如果 SQL 语句成功执行,函数返回 SQLITE_OK(其值为 0)。
    • 如果发生错误,函数返回一个非零的错误代码。这些错误代码是 SQLite 定义的,可以用来确定发生了什么类型的错误。

 

int sqlite3_get_table(mydb,"select * from stu;",&result,&nrows,&nclos,&errmsg);

参数

  1. sqlite3 *mydb:

    • 这是一个指向已打开的 SQLite 数据库的 sqlite3 结构的指针。
  2. const char *sql

    • 这是你要执行的 SQL 查询字符串。
  3. char **resultp

    • 这是一个指向字符指针的指针的指针,用于接收查询结果。函数执行成功后,这个指针将指向一个动态分配的字符串数组,其中包含查询结果。
  4. int *nrowsp

    • 这是一个指向整数的指针,用于接收查询结果中的行数。
  5. int *ncolsp

    • 这是一个指向整数的指针,用于接收查询结果中的列数。
  6. 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");
    }

 

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值