欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > SQLite3 数据库

SQLite3 数据库

2025/2/24 3:30:46 来源:https://blog.csdn.net/lijiaweixx/article/details/141688358  浏览:    关键词:SQLite3 数据库

一、SQLite3 命令

1. 基本命令

  • .tables:用于查看数据库中的表。
  • .headers on/off:开启或者关闭表头,方便查看表结构。
  • .mode column:使列对齐,增强数据的可读性。
  • .width 列宽1 列宽2:设置每一列的列宽,可根据数据内容进行调整。
  • .schema 表名:查看指定表的结构,包括列名、数据类型等信息。

二、SQLite3 的 SQL 语句

1. 创建表

使用 create table 语句创建表,语法为 create table 表名(列名1 数据类型 ,列名2 数据类型, 类名3 数据类型)。例如:create table students(id INTEGER, name TEXT, age INTEGER);

2. 插入数据

通过 insert into 语句向表中插入数据,语法为 insert into 表名 values(值1, 值2, 值3)。例如:insert into students values(1, 'Tom', 18);

3. 查询

  • 可以使用 select 列名1,列名2 from 表名 来查询指定列的数据,或者使用 select * from 表名 查询表中的所有数据。
  • 条件查找:使用 select * from 表名 where 列 关系运算符 值,关系运算符包括 >、<、=、!=、>=、<= 等。例如:select * from students where age > 18;
  • 模糊匹配:使用 like 进行模糊匹配,% 可以通配多个字符,_ 只能通配一个字符。例如:select * from students where name like '%o%';
  • 排序:使用 order by 进行排序,ASC 为升序排列,DESC 为降序排列。例如:select * from students order by age DESC;

4. 删除一行

使用 delect from 表名 where 列名 关系运算符 值 删除满足条件的一行数据。例如:delect from students where id = 1;

5. 删除一张表

使用 drop 表名 删除整张表。例如:drop table students;

6. 修改

使用 update 表名 set 列名=新值 where 列=值 修改表中的数据。例如:update students set age = 19 where name = 'Tom';

7. 设置主键值自动增长列

  • 主键值自动增长列的数据类型必须是 INTEGER
  • 语法为 类名 INTEGER PRIMARY KEY AUTOINCREMENT。例如:create table students(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);

8. 多表联查

  • 内连接:INNER JOIN
  • 外连接:LEFT OUTER JOIN

三、SQLite3 提供的 C/C++ API 接口

1. sqlite3_open

功能是打开数据库,如果不存在,则创建。
参数:

  • filename:数据库名称。
  • ppDb:保存数据库句柄的地址。
    返回值:成功返回 SQLITE_OK,失败返回错误码。

2. sqlite3_exec

功能是执行 SQL 语句。
参数:

  • pdb:数据库句柄。
  • sql:要执行的 SQL 语句的首地址。
  • callback:当执行 select 语句时使用到的回调函数。
  • arg:当执行 select 语句时,传递给回调函数的第一个参数。
  • errmsg:存储错误信息的地址。
    返回值:成功返回 SQLITE_OK,失败返回错误码。
//打开本目录下的stu.db文件,创建class4列表并添加数据
int main(int argc, const char *argv[])
{sqlite3 *pdb;int ret = sqlite3_open("./stu.db", &pdb);	if (ret != SQLITE_OK){fprintf(stderr,"sqlite3_open fail : %s\n", sqlite3_errmsg(pdb));return -1;}char *sql = "create table if not exists class4(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score REAL);";ret = sqlite3_exec(pdb, sql, NULL, NULL, NULL);if (ret != SQLITE_OK){fprintf(stderr, "sqlite3_exec fail : %s\n", sqlite3_errmsg(pdb));sqlite3_close(pdb);return -1;}sql = "insert into class4 values(NULL, \"zhangsan\", 99);";ret = sqlite3_exec(pdb, sql, NULL, NULL, NULL);if (ret != SQLITE_OK){fprintf(stderr, "sqlite3_exec fail : %s\n", sqlite3_errmsg(pdb));sqlite3_close(pdb);return -1;}sqlite3_close(pdb);return 0;
}

3. 回调函数

int (*callback)(void*,int column_cnt,char**column_value,char**column_name),在使用 sqlite3_exec 执行 select 语句时,每查找到一条数据,则调用一次回调。
参数:

  • argsqlite3_exec 传递的第 4 个参数。
  • column_cnt:查找到的数据的列数。
  • column_value:查找到的一行数据的每一列值的地址的集合。
  • column_name:查找到的一行数据的每一列列名的地址的集合。
    返回值:必须返回 0。

注意事项:

  1. 每找到一行,回调被触发一次。
  2. 回调函数必须返回 0。 

SQLite3思维导图: 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词