golang操作sqlite3
在Go中操作SQLite3数据库,你可以使用mattn/go-sqlite3
包。以下是一个简单的例子,展示了如何连接到SQLite3数据库、创建表、插入数据以及查询数据。
首先,你需要安装mattn/go-sqlite3
包:
go get github.com/mattn/go-sqlite3
然后,你可以使用以下代码操作SQLite3数据库:
package main
import (
"database/sql"
"fmt"
_ "github.com/mattn/go-sqlite3"
"log"
)
func main() {
// 连接到SQLite数据库
db, err := sql.Open("sqlite3", "./example.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 创建表
createTableSQL := `CREATE TABLE IF NOT EXISTS users (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"username" TEXT,
"email" TEXT,
"created_at" DATETIME
);`
if _, err := db.Exec(createTableSQL); err != nil {
log.Fatal(err)
}
// 插入数据
insertSQL := `INSERT INTO users(username, email, created_at) VALUES (?, ?, ?)`
stmt, err := db.Prepare(insertSQL)
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
_, err = stmt.Exec("user1", "user1@example.com", "2023-01-01T00:00:00")
if err != nil {
log.Fatal(err)
}
// 查询数据
rows, err := db.Query("SELECT id, username, email, created_at FROM users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id int
var username string
var email string
var createdAt string
if err := rows.Scan(&id, &username, &email, &createdAt); err != nil {
log.Fatal(err)
}
fmt.Printf("%d %s %s %s\n", id, username, email, createdAt)
}
if err := rows.Err(); err != nil {
log.Fatal(err)
}
}
这段代码展示了如何使用Go操作SQLite3数据库的基本流程:
- 使用
sql.Open
连接到数据库。 - 使用
db.Exec
执行创建表的SQL语句。 - 使用
db.Prepare
和stmt.Exec
插入数据。 - 使用
db.Query
执行查询并遍历结果集。
确保你有权限写入当前目录下的example.db
文件,否则可能会遇到权限问题。
评论已关闭