当前位置: 首页 > news >正文

Go-Sqlite3学习

go-sqlite3 是 Go 语言中用于操作 SQLite 数据库的第三方驱动库。SQLite 是一种轻量级、嵌入式的关系型数据库,适用于小型应用和嵌入式开发场景,而 go-sqlite3 库让我们能够在 Go 项目中轻松使用 SQLite 数据库。

下面是 go-sqlite3 的基本学习与使用指南:

1. 安装 go-sqlite3

要在项目中使用 go-sqlite3,首先需要安装该库。可以使用以下命令安装:

go get github.com/mattn/go-sqlite3

安装完成后,我们就可以在代码中导入它。

2. 打开和关闭数据库

在 Go 中,使用 sql 包的 sql.Open() 方法来连接数据库。go-sqlite3 实际上是一个 database/sql 驱动,所以可以直接用标准库中的 database/sql 包进行操作。

package mainimport ("database/sql""log"_ "github.com/mattn/go-sqlite3" // 导入 SQLite3 驱动
)func main() {// 打开数据库连接db, err := sql.Open("sqlite3", "./test.db")if err != nil {log.Fatal(err)}defer db.Close()// 检查连接是否成功err = db.Ping()if err != nil {log.Fatal(err)}log.Println("数据库连接成功")
}

3. 创建表

我们可以使用 Exec 方法执行 SQL 语句,比如创建一张表:

func createTable(db *sql.DB) {query := `CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER);`_, err := db.Exec(query)if err != nil {log.Fatalf("创建表失败: %v", err)}log.Println("表创建成功")
}

4. 插入数据

使用 Exec 方法可以插入数据:

func insertUser(db *sql.DB, name string, age int) {query := "INSERT INTO users (name, age) VALUES (?, ?)"_, err := db.Exec(query, name, age)if err != nil {log.Fatalf("插入数据失败: %v", err)}log.Println("数据插入成功")
}

5. 查询数据

可以使用 QueryQueryRow 方法来查询数据:

func queryUsers(db *sql.DB) {rows, err := db.Query("SELECT id, name, age FROM users")if err != nil {log.Fatalf("查询数据失败: %v", err)}defer rows.Close()for rows.Next() {var id intvar name stringvar age interr := rows.Scan(&id, &name, &age)if err != nil {log.Fatalf("数据扫描失败: %v", err)}log.Printf("用户 ID: %d, 名称: %s, 年龄: %d\n", id, name, age)}
}

6. 更新数据

可以使用 Exec 方法执行更新操作:

func updateUser(db *sql.DB, id int, age int) {query := "UPDATE users SET age = ? WHERE id = ?"_, err := db.Exec(query, age, id)if err != nil {log.Fatalf("更新数据失败: %v", err)}log.Println("数据更新成功")
}

7. 删除数据

使用 Exec 方法可以删除数据:

func deleteUser(db *sql.DB, id int) {query := "DELETE FROM users WHERE id = ?"_, err := db.Exec(query, id)if err != nil {log.Fatalf("删除数据失败: %v", err)}log.Println("数据删除成功")
}

8. 完整示例

func main() {db, err := sql.Open("sqlite3", "./test.db")if err != nil {log.Fatal(err)}defer db.Close()createTable(db)insertUser(db, "Alice", 30)insertUser(db, "Bob", 25)queryUsers(db)updateUser(db, 1, 32)deleteUser(db, 2)
}

注意事项

  1. 数据安全:尽量使用参数化查询(?)来防止 SQL 注入攻击。
  2. 连接管理sql.DB 连接是线程安全的,建议在全局范围内维护数据库连接。
  3. 错误处理:注意处理每个数据库操作的错误,确保数据一致性。

这样,我们就可以在 Go 中使用 go-sqlite3 驱动来操作 SQLite 数据库了。希望这对你学习 go-sqlite3 有帮助!


http://www.mrgr.cn/news/63658.html

相关文章:

  • 【我的 PWN 学习手札】IO_FILE 之 FSOP
  • Three.js 渲染技术:打造逼真3D体验的幕后功臣
  • MySQL 视图 存储过程与存储函数
  • 鸿蒙中调整应用内文字大小
  • 英语语法精简框架
  • 6 分布式限流框架
  • 吞吐量最高飙升20倍!破解强化学习训练部署难题
  • 信息隐藏技术概述
  • OKHTTP断点续传
  • Altium Designer使用技巧(二)
  • 啊手动阀示范点
  • 数据结构与算法实验练习(四)(排序及线性表的应用)
  • 爬虫日常实战
  • Java项目实战II基于Java+Spring Boot+MySQL的桂林旅游景点导游平台(开发文档+数据库+源码)
  • openai api 文件分析/联网/画图代码示例
  • 2024年10月文章一览
  • 为什么服务器几乎都是Linux操作系统?
  • 怎样提取视频中的音频?分享五款好用软件!
  • 【MX-S4-T2】「yyOI R2」youyou 不喜欢夏天
  • 智能嵌入式机械臂开发攻略
  • Oracle 第18章:分区技术
  • 【AI日记】24.11.01 LangChain、openai api和github copilot
  • flex 布局比较容易犯的错误 出现边界超出的预想的情况
  • Hadoop期末复习(完整版)
  • 使用OCR识别手写文本
  • dc源码铺子应用部署教程