news 2026/3/25 0:00:58

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/3/22 3:25:27

寒假学习10(HAL库1+模数电10)

硬件系统的组成 &#xff1a;主控芯片 外围设备 一 。 主控芯片的选型 1 体系结构&#xff1a; arm : 移动端 功耗低/算力/处理能力/主频 缺点&#xff1a;不开源 ARM 架构 Cortex-A : MPU &#xff1a; 树莓派&#xff08;博通&#xff0c;学习资料多&#xff09;&#x…

作者头像 李华
网站建设 2026/3/24 23:33:59

Java计算机毕设之基于Java的自驾游攻略查询系统的设计与实现基于Java的自驾游攻略查询系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

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

作者头像 李华
网站建设 2026/3/24 18:41:39

Java RESTful开发:从入门到精通

好的&#xff0c;这是一份关于 Java RESTful 接口开发的进阶指南&#xff1a; Java RESTful 接口开发&#xff1a;从入门到精通 RESTful API 是现代 Web 应用和服务之间通信的核心。使用 Java 开发高效、健壮、易用的 RESTful 接口是后端开发的重要技能。以下是从入门到精通的…

作者头像 李华
网站建设 2026/3/24 17:53:31

深入解析Java栈帧机制

Java方法栈帧深度解析1. 栈帧基本结构在Java虚拟机&#xff08;JVM&#xff09;执行过程中&#xff0c;每个方法调用都会在栈内存中创建一个栈帧&#xff08;Stack Frame&#xff09;&#xff0c;包含以下核心组件&#xff1a;局部变量表&#xff1a;存储方法参数和方法内定义的…

作者头像 李华
网站建设 2026/3/24 23:58:24

【计算机毕业设计案例】基于springboot+BS构架的失物招领平台失物招领系统设计与实现(程序+文档+讲解+定制)

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

作者头像 李华
网站建设 2026/3/16 19:21:27

Java毕设选题推荐:基于Sprinboot的失物招领系统设计与实现基于springboot+BS构架的失物招领系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

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

作者头像 李华