在Node-RED中操作SQLite数据库进行增删改查,可以按照以下步骤进行:


1. 安装SQLite节点

  • 在Node-RED中安装 node-red-node-sqlite 节点:
    1. 点击右上角菜单 → Manage paletteInstall
    2. 搜索 node-red-node-sqlite 并安装。
      安装sqlite

2. 配置SQLite数据库连接

  1. 拖拽一个 SQLite 节点到画布。
  2. 双击节点配置:
    • Database:填写SQLite数据库文件路径(如 ./mydatabase.db,会自动创建)。
    • 其他配置保持默认。
      编辑sqlite节点

3. 初始化表结构(可选)

若数据库无表,需先创建表。示例:创建 users 表。

  • 使用 Inject 节点触发初始化:
    CREATE TABLE IF NOT EXISTS users (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      name TEXT NOT NULL,
      email TEXT NOT NULL
    )
    
  • 配置 Inject 节点的 msg.topic 为上述SQL语句。
  • 连接 InjectSQLite 节点,部署后点击Inject按钮执行。
    在这里插入图片描述

4. 增删改操作示例

插入数据(INSERT)
  1. Function 节点 构造插入语句和参数:
    msg.topic = "INSERT INTO users (name, email) VALUES ($name, $email)";
    msg.payload = ["alice", "alice@163.com"];
    return msg;
    
  2. 连接 FunctionSQLite 节点。
  3. SQLite节点返回结果(如 lastID)。
    在这里插入图片描述
  4. 也可用数据库管理工具连接上SQLite数据库文件,更能直观的查看结果。
    在这里插入图片描述

更新数据(UPDATE)
  1. Function 节点 构造更新语句:
    msg.topic = "UPDATE users SET email = $email WHERE name = $name";
    msg.payload = ["new_email@1example.com", "alice"];
    return msg;
    
  2. SQLite节点返回影响的行数(changes)。

删除数据(DELETE)
  1. Function 节点 构造删除语句:
    msg.topic = "DELETE FROM users WHERE id = $id";
    msg.payload = [1]; // 删除id为1的记录
    return msg;
    
  2. SQLite节点返回影响的行数。

5. 错误处理

  • 添加 Catch 节点捕获SQLite节点的错误。
  • 使用 Debug 节点查看输出结果(如 msg.payload)。

示例流程

[{"id":"b49ad3a8ddd23776","type":"tab","label":"sqlite","disabled":false,"info":"","env":[]},{"id":"1d6c75acfffa484b","type":"sqlite","z":"b49ad3a8ddd23776","mydb":"e976380597b4a77d","sqlquery":"msg.topic","sql":"","name":"连接数据库","x":410,"y":220,"wires":[["4d6c0f18aa1ec215"]]},{"id":"33655dac0fdde87f","type":"inject","z":"b49ad3a8ddd23776","name":"创建数据库表","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"CREATE TABLE IF NOT EXISTS users (   id INTEGER PRIMARY KEY AUTOINCREMENT,   name TEXT NOT NULL,   email TEXT NOT NULL )","payload":"","payloadType":"date","x":200,"y":220,"wires":[[]]},{"id":"4d6c0f18aa1ec215","type":"debug","z":"b49ad3a8ddd23776","name":"结果","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":610,"y":220,"wires":[]},{"id":"d9065c34530f7516","type":"inject","z":"b49ad3a8ddd23776","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":340,"wires":[["7006be5525f05b5c"]]},{"id":"7006be5525f05b5c","type":"function","z":"b49ad3a8ddd23776","name":"新增数据","func":"// 新增\nmsg.topic = \"INSERT INTO users (name, email) VALUES ($name, $email)\";\nmsg.payload = [\"alice\", \"alice@163.com\"];\nreturn msg;\n\n\n\n// // 更新\n// msg.topic = \"UPDATE users SET email = $email WHERE name = $name\";\n// msg.payload = [\"new_email@123.com\", \"alice\"];\n// return msg;\n\n\n\n// // 删除\n// msg.topic = \"DELETE FROM users WHERE id = $id\";\n// msg.payload = [1]; // 删除id为1的记录\n// return msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":380,"y":340,"wires":[["1d6c75acfffa484b"]]},{"id":"e976380597b4a77d","type":"sqlitedb","db":"./mydatabase.db","mode":"RWC"}]

关键点

  • 参数化查询:使用 ? 占位符避免SQL注入。
  • 结果处理:插入返回 lastID,更新/删除返回 changes
  • 事务:如需事务,在单个SQLite节点中执行多条语句(用 BEGIN; ... COMMIT;)。

总结步骤:

  1. 安装sqlite节点。
  2. 创建或指定数据库文件。
  3. 配置sqlite节点,连接数据库。
  4. 创建表结构(如果不存在)。
  5. 构造增删改的SQL语句,通过注入消息触发,传递必要的参数。
  6. 处理可能的错误,检查输出。

通过上述步骤,即可在Node-RED中安全高效地操作SQLite数据库。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐