Go连接并操作SQLite数据库基本步骤

 更新时间:2024年01月31日 11:33:18   作者:云原生Go 源自开发者  
在这篇文章中,我们将详细描述如何在 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")
columns, err := rows.Columns()
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 {

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 {

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 数据库的基本步骤,更多关于Go连接操作SQLite数据库的资料请关注脚本之家其它相关文章!

相关文章

  • golang的HTTP基本认证机制实例详解

    golang的HTTP基本认证机制实例详解

    这篇文章主要介绍了golang的HTTP基本认证机制,结合实例形式较为详细的分析了HTTP请求响应的过程及认证机制实现技巧,需要的朋友可以参考下
    2016-07-07
  • Golang根据job数量动态控制每秒协程的最大创建数量方法详解

    Golang根据job数量动态控制每秒协程的最大创建数量方法详解

    这篇文章主要介绍了Golang根据job数量动态控制每秒协程的最大创建数量方法
    2024-01-01
  • Go 语言中映射(Map)使用场景小结

    Go 语言中映射(Map)使用场景小结

    本文介绍了Go语言中映射(Map)的多种应用场景,包括基础的键值存储、集合实现、处理非结构化数据、数据分组、缓存优化和倒排索引等,感兴趣的可以了解一下
    2025-10-10
  • golang实践-第三方包为私有库的配置方案

    golang实践-第三方包为私有库的配置方案

    这篇文章主要介绍了golang实践-第三方包为私有库的配置方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • GoLang桥接模式的实现示例

    GoLang桥接模式的实现示例

    桥接模式是一种结构型设计模式,通过桥接模式可以将抽象部分和它的实现部分分离,本文主要介绍了GoLang桥接模式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • go语言数据结构之前缀树Trie

    go语言数据结构之前缀树Trie

    这篇文章主要介绍了go语言数据结构之前缀树Trie,文章围绕主题展开详细内容介绍,具有一定得参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • Golang守护进程用法示例分析

    Golang守护进程用法示例分析

    这篇文章主要介绍了Golang守护进程用法示例,创建守护进程首先要了解go语言如何实现创建进程,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习吧
    2023-05-05
  • Go语言调用DeepSeek API实现流式输出和对话

    Go语言调用DeepSeek API实现流式输出和对话

    DeepSeek是一个强大的AI模型服务平台,本文将详细介绍如何使用Go语言调用DeepSeek API实现流式输出和对话功能,感兴趣的小伙伴可以了解一下
    2025-02-02
  • 详解Golang中Channel的原理和使用技巧

    详解Golang中Channel的原理和使用技巧

    Channel管道提供了一种机制,它在两个并发执行的协程之间进行同步,并通过传递与该管道元素类型相符的值来进行通信。本文主要介绍了Channel的原理和使用技巧,需要的可以参考一下
    2022-11-11
  • Go type关键字(类型定义与类型别名的使用差异)用法实例探究

    Go type关键字(类型定义与类型别名的使用差异)用法实例探究

    这篇文章主要为大家介绍了Go type关键字(类型定义与类型别名的使用差异)用法实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论