golang 使用sqlite

发布时间:2024-12-23 01:39:40

使用 Golang 操作 SQLite 数据库

Golang 是一种简洁、高效的编程语言,其内置支持 SQLite 数据库操作。SQLite 是一个轻量级的关系型数据库,广泛用于嵌入式设备和移动应用程序中。本文将介绍如何使用 Golang 操作 SQLite 数据库。

安装 SQLite 驱动

Golang 提供了很多开源的 SQLite 驱动,可根据个人需求选择适合的驱动库。其中最流行的是 "go-sqlite3" 驱动。

要使用 "go-sqlite3" 驱动,首先需要安装它:

go get github.com/mattn/go-sqlite3

安装完成后,可以在代码中引入该驱动:

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

创建数据库连接

在开始操作数据库之前,首先需要建立与数据库的连接。可以使用 "sql.Open" 函数来创建连接。

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

以上代码会打开名为 "test.db" 的 SQLite 数据库,并返回一个 "sql.DB" 实例。

执行 SQL 语句

接下来,可以使用 "Exec" 方法执行 SQL 语句。下面是一个插入数据的示例:

_, err = db.Exec("INSERT INTO users(name, age) VALUES(?, ?)", "John", 30)
if err != nil {
    fmt.Println(err)
    return
}

以上代码会向名为 "users" 的表中插入一条记录,包括姓名和年龄。

查询数据

要查询数据库中的数据,可以使用 "Query" 方法。

rows, err := db.Query("SELECT * FROM users")
if err != nil {
    fmt.Println(err)
    return
}
defer rows.Close()

var name string
var age int

for rows.Next() {
    err := rows.Scan(&name, &age)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(name, age)
}

err = rows.Err()
if err != nil {
    fmt.Println(err)
    return
}

以上代码会查询名为 "users" 的表中的所有记录,并将结果输出。

事务处理

在 Golang 中,可以使用事务来保证数据操作的原子性。下面是一个事务处理的示例:

tx, err := db.Begin()
if err != nil {
    fmt.Println(err)
    return
}

stmt, err := tx.Prepare("INSERT INTO users(name, age) VALUES(?, ?)")
if err != nil {
    fmt.Println(err)
    return
}
defer stmt.Close()

_, err = stmt.Exec("Mike", 25)
if err != nil {
    fmt.Println(err)
    return
}

_, err = stmt.Exec("Tom", 35)
if err != nil {
    fmt.Println(err)
    return
}

err = tx.Commit()
if err != nil {
    fmt.Println(err)
    return
}

以上代码会开启一个事务,并逐步插入两条记录到名为 "users" 的表中,最后提交事务。

总结

本文介绍了如何使用 Golang 操作 SQLite 数据库。首先安装了 "go-sqlite3" 驱动库,然后建立了与数据库的连接。通过 "Exec" 方法执行 SQL 语句和 "Query" 方法查询数据。此外,还学习了如何使用事务处理来保证数据操作的原子性。

Golang 提供了简洁、高效的方式来操作 SQLite 数据库,使开发者能够轻松处理数据存储和检索的需求。

相关推荐