在Golang中,可以使用第三方库来实现数据库连接池。以下是一个示例,使用github.com/jmoiron/sqlx
库和MySQL作为数据库:
package main
import (
"fmt"
"log"
"time"
"github.com/jmoiron/sqlx"
_ "github.com/go-sql-driver/mysql"
)
var db *sqlx.DB
func initDB() {
dataSourceName := "user:password@tcp(localhost:3306)/database"
var err error
db, err = sqlx.Open("mysql", dataSourceName)
if err != nil {
log.Fatal(err)
}
db.SetMaxOpenConns(10) // 设置最大打开的连接数
db.SetMaxIdleConns(5) // 设置连接池中的最大空闲连接数
db.SetConnMaxLifetime(time.Hour) // 设置连接的最大生命周期
err = db.Ping()
if err != nil {
log.Fatal(err)
}
}
func main() {
initDB()
defer db.Close()
// 使用连接池进行数据库操作
rows, err := db.Query("SELECT * FROM users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id int
var name string
// ...
// 解析数据...
fmt.Println(id, name)
}
if rows.Err() != nil {
log.Fatal(rows.Err())
}
}
上述代码中,我们首先通过 sqlx.Open()
打开与数据库的连接,并设置了一些连接池参数,例如最大打开的连接数、最大空闲连接数和连接的最大生命周期。然后我们执行SQL查询,并通过Query()
方法获取结果集。最后,我们可以遍历结果集并解析数据。
请注意,上述示例中使用了MySQL作为数据库示例,如果你需要连接其他类型的数据库,你可能需要导入相应的驱动并修改连接字符串。
希望以上示例能对你有所帮助!
内容由零声教学AI助手提供,问题来源于学员提问