ESP32 Arduino SQLite3库使用教程
项目介绍
ESP32 Arduino SQLite3库是一个用于在ESP32开发板上访问SQLite数据库文件的开源库。该库允许通过SPIFFS或SD卡在ESP32 SoC上进行SQLite数据库文件的创建和访问。SQLite是一个轻量级的嵌入式数据库,非常适合在资源受限的设备上使用。
项目快速启动
安装步骤
-
下载库文件: 从GitHub仓库下载库文件:ESP32 Arduino SQLite3库
-
解压并安装: 将下载的库文件解压到Arduino的libraries文件夹中。具体路径如下:
- Windows:
C:\Users\(username)\Documents\Arduino\libraries
- Linux:
/home/<username>/Arduino/libraries
- MacOS:
/Users/<username>/Documents/Arduino/libraries
- Windows:
-
包含库文件: 在Arduino IDE中,通过菜单
项目
->加载库
->添加.ZIP库
来包含下载的库文件。
示例代码
以下是一个简单的示例代码,展示如何在ESP32上使用SQLite3库创建和访问数据库:
#include <Arduino.h>
#include <SPI.h>
#include <SD.h>
#include <sqlite3.h>
sqlite3 *db;
char *zErrMsg = 0;
int rc;
void setup() {
Serial.begin(115200);
if (!SD.begin(5)) {
Serial.println("SD卡初始化失败!");
return;
}
Serial.println("SD卡初始化成功!");
// 打开或创建数据库文件
rc = sqlite3_open("/sd/test.db", &db);
if (rc) {
Serial.printf("无法打开数据库: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return;
}
Serial.println("数据库打开成功!");
// 创建表
char *sql = "CREATE TABLE IF NOT EXISTS test(" \
"id INTEGER PRIMARY KEY AUTOINCREMENT," \
"name TEXT NOT NULL);";
rc = sqlite3_exec(db, sql, NULL, 0, &zErrMsg);
if (rc != SQLITE_OK) {
Serial.printf("SQL错误: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} else {
Serial.println("表创建成功!");
}
// 插入数据
sql = "INSERT INTO test (name) VALUES ('Hello, SQLite!');";
rc = sqlite3_exec(db, sql, NULL, 0, &zErrMsg);
if (rc != SQLITE_OK) {
Serial.printf("SQL错误: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} else {
Serial.println("数据插入成功!");
}
// 查询数据
sql = "SELECT * FROM test;";
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
Serial.printf("SQL错误: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} else {
Serial.println("数据查询成功!");
}
sqlite3_close(db);
}
void loop() {
// 主循环
}
int callback(void *NotUsed, int argc, char **argv, char **azColName) {
for (int i = 0; i < argc; i++) {
Serial.printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
Serial.println();
return 0;
}
应用案例和最佳实践
应用案例
- 智能家居系统:使用ESP32和SQLite3库来存储和查询家庭传感器数据,如温度、湿度等。
- 物联网设备日志记录:在物联网
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考