探索高效数据库操作:go-sqlite3——一个强大的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-01 00: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, email string
var createdAt string
if err := rows.Scan(&id, &username, &email, &createdAt); err != nil {
log.Fatal(err)
}
log.Println(id, username, email, createdAt)
}
// 更新数据
updateSQL := `UPDATE users SET username = ? WHERE id = ?`
_, err = db.Exec(updateSQL, "new_admin", 1)
if err != nil {
log.Fatal(err)
}
// 删除数据
deleteSQL := `DELETE FROM users WHERE id = ?`
_, err = db.Exec(deleteSQL, 1)
if err != nil {
log.Fatal(err)
}
}
这段代码展示了如何使用go-sqlite3包来操作SQLite数据库。首先,它创建了一个SQLite数据库连接,然后创建了一个表,接着插入了一条数据,进行了查询操作,更新了数据,并删除了数据。这个过程涵盖了数据库的基本操作,并且每一步都有适当的错误检查。
评论已关闭