返回列表 发布新帖
查看: 59|回复: 0

使用SQLite实现本地存储

发表于 7 天前 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在开发工具类软件、桌面应用或者移动端时,我们经常需要一个轻量级数据库来做本地存储。相比 MySQL、Postgres 等服务型数据库,SQLite 体积小、零配置、单文件存储,非常适合这种场景。
本文将带你通过 Go + GORM + SQLite 驱动,一步步搭建一个本地存储的示例程序。

一、环境准备首先安装依赖库:
  1. go get -u gorm.io/gorm
  2. go get -u gorm.io/driver/sqlite
复制代码

二、定义模型我们以一个简单的 Note 记事本 为例:
  1. package main


  2. import (
  3. "gorm.io/driver/sqlite"
  4. "gorm.io/gorm"
  5. "log"
  6. )


  7. // Note 记事本模型
  8. type Note struct {
  9. ID uint `gorm:"primaryKey"`
  10. Title string `gorm:"size:100"`
  11. Content string
  12. }


  13. var db *gorm.DB


  14. func initDB() {
  15. var err error
  16. // 创建/连接 SQLite 文件数据库
  17. db, err = gorm.Open(sqlite.Open("notes.db"), &gorm.Config{})
  18. if err != nil {
  19. log.Fatal("数据库连接失败:", err)
  20. }


  21. // 自动迁移(建表)
  22. _ = db.AutoMigrate(&Note{})
  23. }
复制代码
运行后,会在当前目录下生成一个 notes.db 文件,里面存储了表结构和数据。

三、实现基本的本地存储操作1. 新增数据
  1. func createNote(title, content string) {
  2. note := Note{Title: title, Content: content}
  3. db.Create(&note)
  4. log.Println("新增笔记成功:", note)
  5. }
复制代码

2. 查询数据
  1. func getNotes() {
  2. var notes []Note
  3. db.Find(&notes)
  4. log.Println("所有笔记:", notes)
  5. }
复制代码
3.更新数据
  1. func updateNote(id uint, newContent string) {
  2. db.Model(&Note{}).Where("id = ?", id).Update("content", newContent)
  3. log.Println("更新笔记成功, ID:", id)
  4. }
复制代码
4.删除数据
  1. func deleteNote(id uint) {
  2. db.Delete(&Note{}, id)
  3. log.Println("删除笔记成功, ID:", id)
  4. }
复制代码

四、测试本地存储
  1. func main() {
  2. initDB()


  3. // 新增两条笔记
  4. createNote("Go 学习计划", "每天刷 1 个实战案例")
  5. createNote("购物清单", "牛奶、面包、鸡蛋")


  6. // 查询
  7. getNotes()


  8. // 更新
  9. updateNote(1, "每天刷 2 个实战案例")
  10. getNotes()


  11. // 删除
  12. deleteNote(2)
  13. getNotes()
  14. }
复制代码

五、运行效果首次运行,会生成 notes.db 文件。SQLite 可以通过命令行工具或第三方软件(如 DB Browser for SQLite) 打开查看。
程序日志示例:
  1. 新增笔记成功: {1 Go 学习计划 每天刷 1 个实战案例}
  2. 新增笔记成功: {2 购物清单 牛奶、面包、鸡蛋}
  3. 所有笔记: [{1 Go 学习计划 每天刷 1 个实战案例} {2 购物清单 牛奶、面包、鸡蛋}]
  4. 更新笔记成功, ID: 1
  5. 所有笔记: [{1 Go 学习计划 每天刷 2 个实战案例} {2 购物清单 牛奶、面包、鸡蛋}]
  6. 删除笔记成功, ID: 2
  7. 所有笔记: [{1 Go 学习计划 每天刷 2 个实战案例}]
复制代码

六、总结通过本案例,我们实现了:
  • 使用 GORM + SQLite 搭建本地存储数据库
  • 自动迁移模型(建表)
  • 实现了 CRUD 操作(增删改查)
  • 数据存储在单个 notes.db 文件中,方便移植与备份
SQLite 非常适合:
  • 桌面应用:比如记事本、数据分析工具
  • 移动应用:本地缓存、用户数据存储
  • 轻量级服务:不需要 MySQL/Postgres 的完整环境
如果你正在开发一个轻量级的 Go 项目,不妨试试 SQLite,相信能帮你快速实现稳定的本地存储。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.120020 second(s), 8 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表