course/mysql/mysql_rowquery.go

61 lines
1.3 KiB
Go
Raw Normal View History

2024-07-18 21:48:41 +08:00
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql" //自动执行init()
"log"
)
var db *sql.DB //是一个数据库连接池对象
func initDb() (err error) {
//数据库信息
dsn := "root:123456@tcp(43.143.245.135:3306)/wangaodev"
//连接数据库
db, err = sql.Open("mysql", dsn) //不会校验用户名和密码是否正确
if err != nil {
//dsn 格式不正确会报错
return err
}
//校验用户名和密码是否正确
//尝试连接数据库
err = db.Ping()
if err != nil {
return err
}
log.Printf("connect %s success.\n", dsn)
//设置最大连接数
db.SetMaxOpenConns(10)
//设置最大空闲连接数
db.SetMaxIdleConns(5)
return nil
}
// 表结构对象
type user struct {
id int
name string
age int
}
// 查询单行数据
func queryRow(id int) {
var u user
//查询单行记录的sql语句
sqlstr := "select id, name, age from user where id=?"
//执行并且拿到结果
db.QueryRow(sqlstr, id).Scan(&u.id, &u.name, &u.age) //从链接池中拿一个连接出来去数据库查询单条记录,scan方法自动释放连接也就是必须调用scan方法
fmt.Printf("user:%#v\n", u)
}
// go链接mysql示例
func main() {
err := initDb()
if err != nil {
log.Fatalf("init DB failed:%v", err)
}
log.Println("init DB success.")
queryRow(2)
}