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

2024-11-18 19:13:44 +0800 CST views 682

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

在这篇文章中,我们将详细描述如何在 Go 语言中使用 SQLite 数据库。从安装和使用 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)
}
defer rows.Close()

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

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

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

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

推荐文章

前端项目中图片的使用规范
2024-11-19 09:30:04 +0800 CST
Python Invoke:强大的自动化任务库
2024-11-18 14:05:40 +0800 CST
Rust开发笔记 | Rust的交互式Shell
2024-11-18 19:55:44 +0800 CST
CentOS 镜像源配置
2024-11-18 11:28:06 +0800 CST
Vue3中的v-for指令有什么新特性?
2024-11-18 12:34:09 +0800 CST
使用Vue 3和Axios进行API数据交互
2024-11-18 22:31:21 +0800 CST
使用 `nohup` 命令的概述及案例
2024-11-18 08:18:36 +0800 CST
任务管理工具的HTML
2025-01-20 22:36:11 +0800 CST
防止 macOS 生成 .DS_Store 文件
2024-11-19 07:39:27 +0800 CST
在 Vue 3 中如何创建和使用插件?
2024-11-18 13:42:12 +0800 CST
批量导入scv数据库
2024-11-17 05:07:51 +0800 CST
windon安装beego框架记录
2024-11-19 09:55:33 +0800 CST
Java环境中使用Elasticsearch
2024-11-18 22:46:32 +0800 CST
Go语言中实现RSA加密与解密
2024-11-18 01:49:30 +0800 CST
MySQL 1364 错误解决办法
2024-11-19 05:07:59 +0800 CST
10个极其有用的前端库
2024-11-19 09:41:20 +0800 CST
用 Rust 构建一个 WebSocket 服务器
2024-11-19 10:08:22 +0800 CST
Golang中国地址生成扩展包
2024-11-19 06:01:16 +0800 CST
Vue3中的事件处理方式有何变化?
2024-11-17 17:10:29 +0800 CST
php strpos查找字符串性能对比
2024-11-19 08:15:16 +0800 CST
程序员茄子在线接单