连接mysql 库
package main
import (
"fmt"
"strings"
"database/sql"
_"github.com/go-sql-driver/mysql"
)
const (
userName = "***"
password = "***"
ip = "***"
port = "***"
dbName = "***"
)
var db *sql.DB
func consql() {
path := strings.Join([]string{userName, ":", password, "@tcp(",ip, ":", port, ")/", dbName, "?charset=utf8"}, "")
fmt.Println(path)
//打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql"
db, _ = sql.Open("mysql", path)
//用来设置长连接的最长使用时间(从创建时开始计算),超过该时间Go会自动关闭该链接。
//db.SetConnMaxLifetime(100)
db.SetMaxOpenConns(5) // 设置最大的并发打开连接数为5。
//设置上数据库最大闲置连接数,sql.DB允许在连接池中最多保留10个空闲连接
db.SetMaxIdleConns(10)
//验证连接
if err := db.Ping(); err != nil{
fmt.Println("open database fail")
return
}
fmt.Println("connnect success")
rows, err := db.Query("select * from table_name")
defer rows.Close()
if err != nil {
fmt.Println(err)
}
fmt.Println(err)
for rows.Next(){
var res string
rows.Scan(&res)
fmt.Println(res)
}
}
func main(){
consql()
}
连接postgres库
package main
import _ "github.com/lib/pq"
func main() {
pgsqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+"password=%s dbname=%s sslmode=disable", host, port, user, password, dbname)
db, err := sql.Open("postgres", pgsqlInfo)
//fmt.Println(reflect.TypeOf(db)) //*sql.DB
err = db.Ping() //会将连接立马返回给连接池。
query_sql := "select * from tablename"
rows, err := db.Query(query_sql)
defer rows.Close()
}