编程 使用 Go 语言操作 SQLite 数据库的详细指南

2024-11-18 08:11:37 +0800 CST views 536

使用 Go 语言操作 SQLite 数据库的详细指南

在本篇文章中,我们将介绍如何在 Go 语言中使用 SQLite 数据库。我们将从安装和使用 SQLite 驱动包开始,逐步介绍如何创建数据库连接,执行 SQL 查询,处理返回的数据,以及关闭数据库连接。

1. 安装 SQLite 驱动

首先,我们需要在 Go 环境里安装 SQLite 的驱动程序。可以使用以下命令进行安装:

go get github.com/mattn/go-sqlite3

2. 创建数据库连接

使用 sql.Open() 函数可以连接到数据库。它需要两个参数:驱动名称和数据源名称。以下是一个示例:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/mattn/go-sqlite3"
)

func main() {
    db, err := sql.Open("sqlite3", "./test.db")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()
}

3. 执行 SQL 查询

连接建立后,可以使用 db.Exec() 来执行 SQL 查询。例如,创建一个表:

stmt, err := db.Prepare("CREATE TABLE IF NOT EXISTS userinfo(username TEXT, departname TEXT, created DATE)")
if err != nil {
    log.Fatalln(err)
}
_, err = stmt.Exec()
if err != nil {
    log.Fatalln(err)
}

4. 插入数据

通过 stmt.Exec() 可以向表中插入数据:

stmt, err := db.Prepare("INSERT INTO userinfo(username, departname, created) values(?,?,?)")
if err != nil {
    log.Fatalln(err)
}

res, err := stmt.Exec("astaxie", "tech", "2019-12-09")
if err != nil {
    log.Fatalln(err)
}

id, err := res.LastInsertId()
if err != nil {
    log.Fatalln(err)
}

fmt.Println(id)

5. 查询数据

使用 db.Query() 可以执行 SQL 查询并获取结果。例如,查询所有数据:

rows, err := db.Query("SELECT * FROM userinfo")
if err != nil {
    log.Fatalln(err)
}

columns, err := rows.Columns()
if err != nil {
    log.Fatalln(err)
}

values := make([]sql.RawBytes, len(columns))

for i := range values {
    values[i] = new(sql.RawBytes)
}

var value string
for rows.Next() {
    err = rows.Scan(values...)
    if err != nil {
        log.Fatalln(err)
    }

    for _, val := range values {
        if val == nil {
            value = "NULL"
        } else {
            value = string(*val)
        }
        fmt.Println(value)
    }
}

if err = rows.Err(); err != nil {
    log.Fatalln(err)
}

6. 更新数据

更新数据的操作使用 db.Exec() 来执行 SQL 语句:

stmt, err := db.Prepare("update userinfo set username=? where uid=?")
if err != nil {
    log.Fatalln(err)
}

updateRes, err := stmt.Exec("astaxieupdate", lastInsertID)
if err != nil {
    log.Fatalln(err)
}

affect, err := updateRes.RowsAffected()
if err != nil {
    log.Fatalln(err)
}

fmt.Println(affect)

7. 删除数据

删除数据的操作也类似,通过 db.Exec() 执行 SQL 语句:

stmt, err := db.Prepare("DELETE FROM userinfo WHERE uid=?")
if err != nil {
    log.Fatalln(err)
}

delRes, err := stmt.Exec(lastInsertID)
if err != nil {
    log.Fatalln(err)
}

affect, err := delRes.RowsAffected()
if err != nil {
    log.Fatalln(err)
}

fmt.Println(affect)

总结

通过以上步骤,你可以在 Go 语言中操作 SQLite 数据库。本文涵盖了从安装驱动到创建数据库连接、执行查询、插入、更新和删除数据的完整流程,帮助你轻松地将 SQLite 集成到 Go 应用中。

复制全文 生成海报 编程 数据库 Go语言 SQLite

推荐文章

Rust开发笔记 | Rust的交互式Shell
2024-11-18 19:55:44 +0800 CST
html夫妻约定
2024-11-19 01:24:21 +0800 CST
CSS 实现金额数字滚动效果
2024-11-19 09:17:15 +0800 CST
Gin 与 Layui 分页 HTML 生成工具
2024-11-19 09:20:21 +0800 CST
php内置函数除法取整和取余数
2024-11-19 10:11:51 +0800 CST
js迭代器
2024-11-19 07:49:47 +0800 CST
Go语言中的`Ring`循环链表结构
2024-11-19 00:00:46 +0800 CST
html文本加载动画
2024-11-19 06:24:21 +0800 CST
php指定版本安装php扩展
2024-11-19 04:10:55 +0800 CST
Vue中的样式绑定是如何实现的?
2024-11-18 10:52:14 +0800 CST
38个实用的JavaScript技巧
2024-11-19 07:42:44 +0800 CST
宝塔面板 Nginx 服务管理命令
2024-11-18 17:26:26 +0800 CST
任务管理工具的HTML
2025-01-20 22:36:11 +0800 CST
Vue中的表单处理有哪几种方式?
2024-11-18 01:32:42 +0800 CST
Plyr.js 播放器介绍
2024-11-18 12:39:35 +0800 CST
LLM驱动的强大网络爬虫工具
2024-11-19 07:37:07 +0800 CST
Vue3中如何使用计算属性?
2024-11-18 10:18:12 +0800 CST
PyMySQL - Python中非常有用的库
2024-11-18 14:43:28 +0800 CST
goctl 技术系列 - Go 模板入门
2024-11-19 04:12:13 +0800 CST
前端如何优化资源加载
2024-11-18 13:35:45 +0800 CST
# 解决 MySQL 经常断开重连的问题
2024-11-19 04:50:20 +0800 CST
Python中何时应该使用异常处理
2024-11-19 01:16:28 +0800 CST
HTML5的 input:file上传类型控制
2024-11-19 07:29:28 +0800 CST
go发送邮件代码
2024-11-18 18:30:31 +0800 CST
JavaScript设计模式:组合模式
2024-11-18 11:14:46 +0800 CST
程序员茄子在线接单