go-sqlite3: Go语言SQLite3数据库驱动
go-sqlite3
是Go语言的一个扩展,它提供了操作SQLite数据库的接口。它是sqlite3的Go语言版本的数据库驱动。
以下是一些使用go-sqlite3
的示例:
- 创建或打开数据库:
package main
import (
"database/sql"
_ "github.com/mattn/go-sqlite3"
"log"
)
func main() {
db, err := sql.Open("sqlite3", "./foo.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
}
- 执行SQL语句:
package main
import (
"database/sql"
_ "github.com/mattn/go-sqlite3"
"log"
)
func main() {
db, err := sql.Open("sqlite3", "./foo.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
_, err = db.Exec("CREATE TABLE IF NOT EXISTS user (id VARCHAR(20), name VARCHAR(20))")
if err != nil {
log.Fatal(err)
}
_, err = db.Exec("INSERT INTO user (id, name) VALUES ('1', 'foo')")
if err != nil {
log.Fatal(err)
}
}
- 查询数据:
package main
import (
"database/sql"
"fmt"
_ "github.com/mattn/go-sqlite3"
"log"
)
func main() {
db, err := sql.Open("sqlite3", "./foo.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
rows, err := db.Query("SELECT id, name FROM user")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id, name string
if err := rows.Scan(&id, &name); err != nil {
log.Fatal(err)
}
fmt.Printf("ID: %s, Name: %s\n", id, name)
}
if err := rows.Err(); err != nil {
log.Fatal(err)
}
}
- 使用事务:
package main
import (
"database/sql"
"log"
_ "github.com/mattn/go-sqlite3"
)
func main() {
db, err := sql.Open("sqlite3", "./foo.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
tx, err := db.Begin()
if err != nil {
log.Fatal(err)
}
_, err = tx.Exec("INSERT INTO user (id, name) VALUES ('2', 'bar')")
if err != nil {
log.Fatal(err)
}
err = tx.Commit()
if err != nil {
log.Fatal(err)
}
}
以上代码展示了如何使用go-sqlite3
库来打开或创建一个SQLite数据库,执行SQL语句,查询数据,以及如何在Go语言中使用SQLite事务。这些操作是进行数据库编程的基本技能,对于学习Go语言数据库操作有很好的教育意义。
评论已关闭