嵌入式数据库

您所在的位置:网站首页 嵌入式SQL语言的使用规定 嵌入式数据库

嵌入式数据库

#嵌入式数据库| 来源: 网络整理| 查看: 265

目录

数据库的基本概念和常用数据库

sqlite介绍

sqlite安装步骤

sqlite常用命令

sqlite3的C语言的API函数详解

sqlite3使用项目案例

数据库的基本概念和常用数据库

数据库的基本概念:

数据库(Database):是一个按照规定格式存储数据的仓库。数据库管理系统(Database Management System,DBMS):是一种允许用户定义、创建、维护和控制访问数据库的软件系统。数据表(Table):是由行和列组成的二维表格,是数据库中的基本存储单元。字段(Field):表中列的属性,表示一个数据的特定部分。记录(Record):表中的一行数据。主键(Primary Key):表中唯一标识每个记录的字段。外键(Foreign Key):用于建立两个或多个表之间的关系。索引(Index):用于加快数据的检索速度,类似于书的目录。

常用的数据库:

MySQL:是一款免费开源的关系型数据库管理系统,被广泛应用于互联网应用领域。Oracle:是一款商业关系型数据库管理系统,具有高性能、高可靠和高安全性等优点。SQL Server:是微软公司开发的关系型数据库管理系统,适用于大型企业应用。MongoDB:是一款基于文档的NoSQL数据库,具有高可扩展性和灵活性。PostgreSQL:是一款开源的关系型数据库管理系统,具有高度的可扩展性和安全性。sqilte:是一个轻型的数据库系统,它不需要一个单独的服务器进程或操作系统,也不需要配置和管理等繁琐的工作,非常适用嵌入式开发。 sqlite介绍

SQLite 是一个轻型的数据库系统,它不需要一个单独的服务器进程或操作系统,也不需要配置和管理等繁琐的工作。SQLite 主要包括以下几个概念:

数据库文件:SQLite 基于文件的方式进行存储,每个数据库对应一个文件,文件以 .db 为后缀名。数据库文件中包含了一个或多个表,表包含了多个数据行。

表:表是 SQLite 中的基本数据存储单位。一个表由多个字段组成,每个字段对应表中一列数据。

字段:表中的每个列称为一个字段,字段包含了数据的类型、长度等信息。

数据行:表中的每一行称为一个数据行,每个数据行包含了对应字段的数据。

主键:每个表都必须有一个主键,用来唯一标识表中的每行数据。主键可以是一个或多个字段的组合。在 SQLite 中,每个表可以自动创建一个名为 “rowid” 的隐藏字段作为主键。

SQL:SQL(Structured Query Language)是一种用于管理关系型数据库的语言。SQLite 也支持 SQL,可以使用 SQL 对数据库进行查询、插入、更新、删除等操作。

sqlite安装步骤

以下是在Ubuntu上安装SQLite的步骤:

打开终端窗口。

通过以下命令更新Ubuntu软件包列表:

sudo apt-get update

安装SQLite软件包:

sudo apt-get install sqlite3

等待安装完成。

检查SQLite是否成功安装:

sqlite3 --version

如果SQLite版本号被显示出来,说明SQLite已经成功安装。

安装可视化工具

sudo apt-get install sqlitebrowser sqlite常用命令

下面是SQLite常用的系统命令:

.help:查询SQLite帮助信息。

.tables:列出当前数据库中的所有表。

.schema:列出指定表的架构。

.header on|off:打开或关闭输出的列头。

.mode MODE:设置输出模式,如:line、column、list。

.show:显示当前的设置参数。

.quit:退出SQLite命令行界面。

.backup FILENAME:备份数据库,将当前数据库备份到指定文件中。

.restore FILENAME:恢复备份的数据库。

.dump:将整个数据库导出为SQL脚本。

.timeout MS:设置命令的超时时间。

.echo on|off:打开或关闭命令行输出。

.explain on|off:打开或关闭查询计划的输出。

.separator STRING:设置输出分隔符。

.import FILE TABLE:将指定文件中的数据导入到指定表中。

.exit      退出.

注意:命令前面需要加一个英文的.,表示这是一个系统命令。

下面是sqlite常用的sql语句:

创建表:CREATE TABLE table_name (column1 datatype, column2 datatype, column3 datatype, ...);

插入数据:INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

修改数据:UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

删除数据:DELETE FROM table_name WHERE condition;

查询数据:SELECT column1, column2, ... FROM table_name WHERE condition;

聚合函数:SELECT COUNT(column_name), AVG(column_name), SUM(column_name), MAX(column_name), MIN(column_name) FROM table_name;

排序:SELECT column1, column2, ... FROM table_name ORDER BY column_name [ASC|DESC];

分组:SELECT column1, column2, ... FROM table_name GROUP BY column_name;

连接查询:SELECT column1, column2, ... FROM table_name1 INNER/LEFT/RIGHT JOIN table_name2 ON table_name1.column_name = table_name2.column_name;

子查询:SELECT column1, column2, ... FROM table_name WHERE column_name IN (SELECT column_name FROM table_name WHERE condition);

sqlite3的C语言的API函数详解

SQLite是一个轻量级的嵌入式数据库,它的API函数非常简单易用,以下是它的C语言API函数详解和参数定义:

        1.sqlite3_open - 打开一个数据库

函数原型:int sqlite3_open(const char *filename, sqlite3 **ppDb);

参数说明:

filename:要打开的数据库文件名。ppDb:指向sqlite3 *类型的指针的指针,用于存储打开的数据库的句柄。

返回值:

成功返回SQLITE_OK,否则返回其他错误码。

        2.sqlite3_close - 关闭一个数据库

函数原型:int sqlite3_close(sqlite3 *db);

参数说明:

db:要关闭的数据库句柄。

返回值:

成功返回SQLITE_OK,否则返回其他错误码。

        3.sqlite3_exec是一个SQLite C API中的函数,它可以执行一个或多个SQL语句并返回结果,使用简单方便。

函数原型:

int sqlite3_exec( sqlite3*, /* An open database */ const char *sql, /* SQL to be executed */ int (*callback)(void*,int,char**,char**), /* Callback function */ void *, /* 1st argument to callback */ char **errmsg /* Error msg written here */ );

参数列表:

sqlite3 *db:已打开的SQLite数据库句柄;const char *sql:要执行的SQL语句;int (callback)(void,int,char**,char**):回调函数指针(可选参数);void *:回调函数的第一个参数(可选参数);char **errmsg:如果出现错误,错误信息将被记录在这个指针指向的变量中。

返回值:

如果执行成功,则返回 SQLITE_OK;如果执行出错,则返回错误代码,返回码的列表可以在文档中查找。

使用方法:

下面是一个使用sqlite3_exec函数执行SELECT语句的示例:

#include #include int main(int argc, char** argv) { sqlite3* db; char* sql; char* errmsg; int ret; sqlite3_stmt* stmt; const char* tail; const unsigned char* val; // 打开数据库 ret = sqlite3_open("test.db", &db); if (ret != SQLITE_OK) { printf("open database fail:%s\n", sqlite3_errmsg(db)); sqlite3_close(db); return -1; } // 执行查询语句,返回结果集 sql = "SELECT * FROM t_user"; ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg); if (ret != SQLITE_OK) { printf("exec sql fail: %s\n", errmsg); sqlite3_free(errmsg); sqlite3_close(db); return -1; } // 取出查询结果集的值并输出 while (sqlite3_step(stmt) == SQLITE_ROW) { val = sqlite3_column_text(stmt, 0); printf("%s\n", val); } // 释放资源 sqlite3_finalize(stmt); sqlite3_close(db); return 0; } #include #include int callback(void* data, int argc, char** argv, char** azColName) { std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3