编程 使用 Go 语言连接并操作 SQLite 数据库

2024-11-18 20:18:25 +0800 CST views 552

使用 Go 语言连接并操作 SQLite 数据库

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

安装 SQLite 驱动

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

go get github.com/mattn/go-sqlite3

创建数据库连接

接下来,使用 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)
    }
    defer db.Close()
}

执行 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)
}

插入数据

我们可以通过以下方式向表中插入数据:

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)

查询数据

类似地,我们可以使用 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)
}

更新数据

更新数据的操作和插入数据类似,都是利用 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)

删除数据

最后,删除数据操作与插入和更新数据操作类似,同样利用 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 语言构建基于 SQLite 数据库应用的完整流程。

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

推荐文章

Vue3中的Scoped Slots有什么改变?
2024-11-17 13:50:01 +0800 CST
Gin 框架的中间件 代码压缩
2024-11-19 08:23:48 +0800 CST
Vue 3 中的 Fragments 是什么?
2024-11-17 17:05:46 +0800 CST
Go 如何做好缓存
2024-11-18 13:33:37 +0800 CST
网站日志分析脚本
2024-11-19 03:48:35 +0800 CST
小技巧vscode去除空格方法
2024-11-17 05:00:30 +0800 CST
Nginx负载均衡详解
2024-11-17 07:43:48 +0800 CST
使用 node-ssh 实现自动化部署
2024-11-18 20:06:21 +0800 CST
go命令行
2024-11-18 18:17:47 +0800 CST
对多个数组或多维数组进行排序
2024-11-17 05:10:28 +0800 CST
服务器购买推荐
2024-11-18 23:48:02 +0800 CST
Python设计模式之工厂模式详解
2024-11-19 09:36:23 +0800 CST
Redis函数在PHP中的使用方法
2024-11-19 04:42:21 +0800 CST
ElasticSearch 结构
2024-11-18 10:05:24 +0800 CST
Claude:审美炸裂的网页生成工具
2024-11-19 09:38:41 +0800 CST
Python 微软邮箱 OAuth2 认证 Demo
2024-11-20 15:42:09 +0800 CST
H5保险购买与投诉意见
2024-11-19 03:48:35 +0800 CST
Vue3中的v-model指令有什么变化?
2024-11-18 20:00:17 +0800 CST
一个有趣的进度条
2024-11-19 09:56:04 +0800 CST
2024年微信小程序开发价格概览
2024-11-19 06:40:52 +0800 CST
JavaScript 策略模式
2024-11-19 07:34:29 +0800 CST
程序员茄子在线接单