esp32 存储数据库
在ESP32上实现数据库存储,可以根据具体需求选择以下几种方案:
1. 使用Preferences库(键值存储)
适用于存储简单的配置数据或键值对,基于非易失性存储(NVS)。
- 优点:简单易用,无需文件系统,数据持久化。
- 缺点:仅支持字符串、整型等基本类型,不适合复杂查询。
示例代码:
#include <Preferences.h>
Preferences prefs;
void setup() {
prefs.begin("my-app"); // 命名空间
prefs.putInt("counter", 123); // 存储整型
prefs.putString("token", "abc123"); // 存储字符串
int val = prefs.getInt("counter", 0); // 读取数据,默认值0
String token = prefs.getString("token", "");
prefs.end();
}
2. 使用SPIFFS/LittleFS文件系统(文件存储)
通过文件系统(SPIFFS或LittleFS)存储结构化数据(如JSON、CSV),适合小型数据库。
- 优点:灵活,可存储复杂数据。
- 缺点:需自行管理数据读写和查询逻辑。
示例(JSON存储):
#include <SPIFFS.h>
#include <ArduinoJson.h>
void saveData() {
DynamicJsonDocument doc(1024);
doc["sensor"] = "temperature";
doc["value"] = 25.6;
File file = SPIFFS.open("/data.json", "w");
serializeJson(doc, file);
file.close();
}
void readData() {
File file = SPIFFS.open("/data.json", "r");
DynamicJsonDocument doc(1024);
deserializeJson(doc, file);
float value = doc["value"];
file.close();
}
3. 使用SQLite数据库(需外部库支持)
通过移植SQLite或使用第三方库实现轻量级SQL数据库(需搭配文件系统)。
- 优点:支持SQL语法,适合复杂查询。
- 缺点:资源占用较高,需确认库的兼容性。
步骤:
- 安装库:例如使用 ESP32-SQLite。
- 示例代码:
#include <sqlite3.h> #include <SPIFFS.h>
sqlite3 *db; int rc;
void setup() { SPIFFS.begin(true); // 打开数据库(存储在SPIFFS中) rc = sqlite3_open("/spiffs/mydb.sqlite", &db); if (rc != SQLITE_OK) { Serial.println("Failed to open database"); return; }
// 创建表 char *sql = "CREATE TABLE IF NOT EXISTS sensor (id INT, value REAL);"; rc = sqlite3_exec(db, sql, NULL, NULL, NULL);
// 插入数据 sql = "INSERT INTO sensor VALUES (1, 25.5);"; rc = sqlite3_exec(db, sql, NULL, NULL, NULL); }
void loop() {}
---
### **4. 使用云数据库(远程存储)**
通过WiFi将数据上传至云端(如Firebase、AWS IoT等),适合需要远程访问的场景。
- **优点**:数据可跨设备访问,存储容量大。
- **缺点**:依赖网络连接。
**示例(Firebase):**
```cpp
#include <FirebaseESP32.h>
FirebaseData fbData;
void setup() {
Firebase.begin("your-firebase-url", "your-secret-key");
Firebase.setInt(fbData, "/sensor/value", 30); // 写入数据
}
5. 使用EEPROM(极小数据存储)
仅适用于极小数据(约4KB),如设备标识或简单配置。
#include <EEPROM.h>
void setup() {
EEPROM.write(0, 123); // 写入字节
EEPROM.commit();
int val = EEPROM.read(0); // 读取字节
}
选择建议
- 简单键值:
Preferences库。 - 结构化数据:
SPIFFS + JSON。 - 复杂查询:尝试移植
SQLite或使用云数据库。 - 远程访问:结合WiFi和云服务(如Firebase)。
确保在项目配置中调整分区表(如增大SPIFFS空间),并注意闪存擦写次数限制。
面向NoSQL数据库的JSON文档异常检测模型
随着信息化技术的发展,面对材料等相关领堿数据的多源异枃、扩展性强、爆炸増长等特点,传统关系数据库无法对数据进行
资料下载
佚名
2021-04-13 15:30:08
数据库的设计资料概述
数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地
资料下载
佚名
2020-03-12 15:49:06
创建新的数据库和更改SQL Server CE数据库中的数据操作教程免费下载
SQL Server CE 中的数据库是存储结构化数据的表集合。在可以存储
资料下载
佚名
2019-09-19 11:28:37
ODX 诊断数据库转换工具 — DDC
1970-01-01 08:00:00 至 1970-01-01 08:00:00
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览