通过实例理解Go访问和操作数据库的几种方式
package main
import (
"context"
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql" // 导入MySQL驱动
)
func main() {
// 连接数据库
db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 检查数据库连接是否成功
err = db.Ping()
if err != nil {
log.Fatal(err)
}
// 使用Context控制查询超时
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// 执行查询
var name string
err = db.QueryRowContext(ctx, "SELECT name FROM users WHERE id = ?", 1).Scan(&name)
if err != nil {
log.Fatal(err)
}
fmt.Printf("The name of the user with ID 1 is %s\n", name)
}
这段代码展示了如何在Go中使用database/sql
包连接MySQL数据库,并执行一个查询操作。代码中使用了context.Context
来控制查询操作的超时,这是一种常见的数据库操作模式,可以防止长时间的数据库操作导致的资源占用。
评论已关闭