探索高效、轻量的数据库管理:go-sqlite
go-sqlite是一个Go语言的SQLite数据库驱动,它提供了一个轻量级且高效的接口来管理SQLite数据库。以下是一个使用go-sqlite创建和使用SQLite数据库的简单示例:
package main
import (
"database/sql"
"log"
_ "github.com/mattn/go-sqlite3" // 导入go-sqlite3驱动
)
func main() {
// 创建或打开数据库
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("admin", "admin@example.com", "2021-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)
}
log.Printf("ID: %d, Username: %s, Email: %s, CreatedAt: %s\n", id, username, email, createdAt)
}
if err := rows.Err(); err != nil {
log.Fatal(err)
}
}
这段代码首先导入了go-sqlite3数据库驱动,然后使用sql.Open
函数创建或打开一个SQLite数据库。接着,它创建了一个名为users
的表(如果该表不存在的话),并插入了一条数据。之后,它执行了一个查询操作来列出所有用户,并打印出每条记录的详细信息。这个过程展示了如何使用Go语言和go-sqlite3包管理SQLite数据库。
评论已关闭