news 2026/6/9 22:10:16

SQLite数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQLite数据库

1.SQLite简介

轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据库用于管理多端设备,更加复杂。
• SQLite是一个无服务器的数据库,是自包含的(可以SQLite理解为一个"文件")。这也称为嵌入式数据库,这意味着数据库引擎作为 应用程序的一部分运行。

1.1 安装

1. 把下载的文件sqlite-autoconf-3390000.tar.gz上传到开发板 2. tar xvf sqlite-autoconf-3390000.tar.gz 解压 3. cd sqlite-autoconf-3390000 进入文件夹 4. ./configure --prefix=/usr/local 配置安装路径在/usr/local 5. make 编译//比较久10分钟 6. sudo make install 安装

2. SQLite语句

2.1 创建数据库

方式一 sqlite3 进入数据库 .open test.db .quit 数据库退出后在命令当前路径创建数据库test.db。 方式二 sqlite3 test.db //在命令运行当前窗口创建数据库test.db //在数据库命令下 .databases 列出当前打开的数据库 .quit 退出

2.2 其他语句

1. 创建一张表格: create table stu2(id Integer,name char,score Integer); 2. 插入一条记录: insert into stu values(18130106,'huang',99); insert into stu2 values(18130101,"gang",100); ''和""都行 insert into stu(name,score) values("huanggang",98); 插入部分字段内容 3. 查看数据库的记录 select * from stu; //查询所有字段的结果 select name,score from stu; //查询数据库中部分字段的内容 4. 删除一条记录 delete from stu where id = 18130101; 5. 更改一条记录 update stu set name = 'huangg' where id = 18130106; 6. 删除一张表 drop table stu; 7. 增加一列 alter table stu add column sex char;

3.SQLite的编程操作

1. sqlite3_open(const char *filename, sqlite3 **ppDb) : 该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。 2. sqlite3_close(sqlite3*) : 该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完 成。如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息。 3. const char *sqlite3_errmsg(sqlite3*) : sqlite3_errcode() 通常用来获取最近调用的API接口返回的错误代码。 4. sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg) : 该例程提供了一个执行 SQL 命令的快捷方式,SQL 命令由 sql 参数提供,可以由多个 SQL 命令组成。 在这里,第一个参数 sqlite3 是打开的数据库对象,sqlite_callback 是一个回调,data 作为其第一个 参数,errmsg 将被返回用来获取程序生成的任何错误。 sqlite3_exec() 程序解析并执行由 sql 参数所给的每个命令,直到字符串结束或者遇到错误为止。 int callback(void *arg, int column_size, char *column_value[], char *column_name[]) 参数分析:void *arg:是sqlite3_exec函数的第四个参数 column_size:数据库的字段 数 column_value[]:列的值 column_name:字段名字

这是错误代码,如图:

• 代码

#include <stdio.h> #include <sqlite3.h> int callback(void *arg, int column_size, char *column_value[], char *column_name[]){ int i; printf("arg=%s\n",(char *)arg); for(i=0;i<column_size;i++){ printf("%s = %s\n", column_name[i], column_value[i]); } printf("=======================\n"); return 0;//必须返回0,这样数据库中有多少条数据,这个回调函数就会被调用多少次 } int main(char argc, char **argv){ sqlite3 *db; char *errorMes = NULL; int ret; if(argc < 2){ printf("Usage: %s xxx.db\n",argv[0]); return -1; } if( (ret = sqlite3_open(argv[1],&db)) == SQLITE_OK){ printf("open %s success\n",argv[1]); }else{ printf("error:%s,%d\n",sqlite3_errmsg(db),ret); if(ret == 14){ printf("permission den\n"); } return -1; } //sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg) sqlite3_exec(db, "select * from stu;",callback, "content of sql:", &errorMes);//errorMes 不会发生段错误,会分配空间的 sqlite3_close(db); printf("done\n"); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 14:15:12

计算机Java毕设实战-基于springboo+vue的旅游自驾游攻略方案分享系统基于Java的自驾游攻略查询系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/31 8:23:33

Java毕设选题推荐:基于Java的自驾游攻略查询系统的设计与实现景点信息展示、地区导航、客房类型与酒店信息查询【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/3 12:52:27

面向高质量SCI论文标准:深度挖掘遥感时空大数据价值、GeoAI可解释性建模与机理归因及高质量论文产出全链路实践技术

在遥感大数据与GeoAI交叉驱动的科研新范式下&#xff0c;单纯堆砌算法的“黑箱实验“已难以通过《RemoteSensing of Environment》或《ISPRS》等顶刊对地理学机理与科学发现的严苛审稿要求。直击“有数据无思路、有模型无解释”的科研痛点&#xff0c;深入解析地理学第一定律(空…

作者头像 李华
网站建设 2026/6/5 7:48:47

降AI实测:从85%到个位数,我只用了这3招(附工具清单)

相信大家对写论文的情境都不陌生&#xff0c;随着ai时代来临&#xff0c;不少同学都会发出这样的感叹“人人都说ai好&#xff0c;降重降ai太难搞” 论文中飘红的不仅仅是“疑似重复”&#xff0c;而多了“疑似ai生成”&#xff0c;尤其是许多高校发布公告明确对论文ai率作出要…

作者头像 李华