main.lua 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "sqlite3demo"
  3. VERSION = "1.0.1"
  4. _G.sys = require("sys")
  5. --[[
  6. @demo sqlite3演示
  7. @tips
  8. 本demo需要sqlite3库, 默认固件都不会带这个库, 需要云编译
  9. 云编译地址: https://wiki.luatos.com/develop/compile/Cloud_compilation.html
  10. 大部分MCU模组都跑不了这个库, 莫念
  11. 在嵌入式环境中, sqlite3能跑, 但不要对性能和可靠性有太高的期待.
  12. 1. 不建议存放超过2000条记录
  13. 2. 务必遵循 open -- sql操作 -- close 的闭环操作
  14. 3. 对于同一个数据库文件, 只能存在一个已打开的操作
  15. 4. 当前仅对 create table/insert/update/delete/selete进行过测试,其他SQL语法未验证
  16. 5. sqlite3版本为 3.44.0
  17. ]]
  18. sys.taskInit(function()
  19. if sqlite3 == nil then
  20. -- 没sqlite3库, 就底层未包含,需要云编译的
  21. while 1 do
  22. log.info("提示", "当前固件未包含sqlite3,请云编译一份")
  23. log.info("云编译文档", "https://wiki.luatos.com/develop/compile/Cloud_compilation.html")
  24. sys.wait(3000)
  25. end
  26. end
  27. sys.wait(1000)
  28. -- 第一步, 打开数据库连接
  29. local db = sqlite3.open("/ram/test.db")
  30. log.info("sqlite3", db)
  31. if db then -- 打开成功返回数据库指针,否则返回nil的
  32. -- 执行建表语句
  33. sqlite3.exec(db, "CREATE TABLE devs(ID INT PRIMARY KEY NOT NULL, name CHAR(50))")
  34. log.info("sys", rtos.meminfo("sys"))
  35. -- 插入多条数据
  36. sqlite3.exec(db, "insert into devs values(1, \"ABC\")")
  37. log.info("sys", rtos.meminfo("sys"))
  38. sqlite3.exec(db, "insert into devs values(2, \"DEF\")")
  39. log.info("sys", rtos.meminfo("sys"))
  40. sqlite3.exec(db, "insert into devs values(3, \"HIJ\")")
  41. log.info("sys", rtos.meminfo("sys"))
  42. -- 执行查询语句
  43. local ret, data = sqlite3.exec(db, "select * from devs where id > 1 order by id desc limit 2")
  44. log.info("查询结果", ret, data)
  45. if ret then
  46. -- 打印查询结果
  47. for k, v in pairs(data) do
  48. log.info("数据", json.encode(v))
  49. end
  50. end
  51. log.info("sys", rtos.meminfo("sys"))
  52. -- 执行全部操作后,一定要关闭数据库连接哦
  53. sqlite3.close(db)
  54. end
  55. end)
  56. -- 用户代码已结束---------------------------------------------
  57. -- 结尾总是这一句
  58. sys.run()
  59. -- sys.run()之后后面不要加任何语句!!!!!