前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang使用sqlite3

Golang使用sqlite3

原创
作者头像
孟斯特
发布2024-08-15 14:50:39
720
发布2024-08-15 14:50:39
举报
文章被收录于专栏:Go学习

在 Go 中使用 SQLite3 数据库,最常见的方法是使用 github.com/mattn/go-sqlite3 这个库。下面是如何在 Go 中使用 SQLite3 的一个简单指南。

1. 安装 SQLite3 Driver

首先,你需要安装 SQLite3 的 Go 驱动。可以使用以下命令:

代码语言:bash
复制
go get github.com/mattn/go-sqlite3

2. 导入库

在你的 Go 代码中,你需要导入 database/sqlgithub.com/mattn/go-sqlite3

代码语言:go
复制
import (
    "database/sql"
    "log"

    _ "github.com/mattn/go-sqlite3"
)

注意 _ 前缀用于匿名导入,使得该包的 init 函数执行,但不直接使用该包中的任何其他东西。

3. 创建或打开 SQLite 数据库

使用 sql.Open 函数来打开一个数据库,如果数据库不存在,它会被创建:

代码语言:go
复制
db, err := sql.Open("sqlite3", "example.db")
if err != nil {
    log.Fatal(err)
}
defer db.Close() // 在函数结束时关闭数据库连接

4. 创建表

可以使用 SQL 语句创建表:

代码语言:go
复制
sqlStmt := `CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT);`
_, err = db.Exec(sqlStmt)
if err != nil {
    log.Fatalf("%q: %s", err, sqlStmt)
}

5. 插入数据

插入数据可以使用 Exec 方法:

代码语言:go
复制
stmt, err := db.Prepare("INSERT INTO users(name) VALUES(?)")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

_, err = stmt.Exec("Alice")
if err != nil {
    log.Fatal(err)
}

6. 查询数据

查询数据可以使用 Query 方法:

代码语言:go
复制
rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
    log.Fatal(err)
}
defer rows.Close()

for rows.Next() {
    var id int
    var name string
    err = rows.Scan(&id, &name)
    if err != nil {
        log.Fatal(err)
    }
    log.Printf("ID: %d, Name: %s", id, name)
}

7. 错误处理

在实际的应用程序中,确保对错误进行适当的处理是至关重要的。在上面的代码中,log.Fatal(err) 用于记录错误并退出程序,你可以根据需要调整错误处理逻辑。

完整示例

以下是一个完整的示例代码,展示了如何使用 SQLite3:

代码语言:go
复制
package main

import (
    "database/sql"
    "log"

    _ "github.com/mattn/go-sqlite3"
)

func main() {
    // 打开数据库
    db, err := sql.Open("sqlite3", "example.db")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // 创建表
    sqlStmt := `CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT);`
    _, err = db.Exec(sqlStmt)
    if err != nil {
        log.Fatalf("%q: %s", err, sqlStmt)
    }

    // 插入数据
    stmt, err := db.Prepare("INSERT INTO users(name) VALUES(?)")
    if err != nil {
        log.Fatal(err)
    }
    defer stmt.Close()

    _, err = stmt.Exec("Alice")
    if err != nil {
        log.Fatal(err)
    }
    _, err = stmt.Exec("Bob")
    if err != nil {
        log.Fatal(err)
    }

    // 查询数据
    rows, err := db.Query("SELECT id, name FROM users")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    for rows.Next() {
        var id int
        var name string
        err = rows.Scan(&id, &name)
        if err != nil {
            log.Fatal(err)
        }
        log.Printf("ID: %d, Name: %s", id, name)
    }

    // 检查查询错误
    err = rows.Err()
    if err != nil {
        log.Fatal(err)
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装 SQLite3 Driver
  • 2. 导入库
  • 3. 创建或打开 SQLite 数据库
  • 4. 创建表
  • 5. 插入数据
  • 6. 查询数据
  • 7. 错误处理
  • 完整示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档