go联动dbms
最基本的样式
import(
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main(){
db,err := sql.Open("mysql","user:password@tcp(127.0.0.1:3306/hello")
rows,err:=db.Query("select id,name from users where id = ?",1)
if err!=nil{
//XXX
}
defer func(){
err = rows.Close()
}
var users []User
for rows.Next(){
bar user User
err := rows.Scan(&user.Id,&user.Name)
if err!=nil{
//XXX
}
uesrs = append(users,user)
}
if rows.Err() !=nil{
//....
}
}连接池管理
//连接池配置
func (db *DB) SetConnMaxIdleTime(d time.Duration) //连接的最大空闲时间
func (db *DB) SetConnMaxLifetime(d time.Duration) //设置连接的最大生存时间
func (db *DB) SetMaxIdleConns(n int) //设置最大空闲连接数
func (db *DB) SetMaxOpenConns(n int) //设置最大打开连接数
//连接池管理
func (db *DB) Stats() DBStats处理返回数据的几种方法
Exec/ExecContext -> Result //只对结果(是否成功)关注
Query / QueryContext -> Rows
(Columns)QueryRow / QueryRowContext -> Row (Rows简化)*
//ROW(S)返回行的数据