发布时间:2024-11-24 21:12:14
首先,我们需要使用`database/sql`库来创建一个数据库连接池。具体的代码如下:
import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) var db *sql.DB func init() { var err error db, err = sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test") if err != nil { fmt.Println(err) return } } func main() { defer db.Close() // 具体的数据库操作 }
在上述代码中,我们通过`sql.Open()`方法来创建一个数据库连接池,并将其赋值给全局变量`db`。然后,我们可以通过`db.Query()`等方法来执行具体的数据库操作。
下面的示例展示了如何正确地获取和释放数据库连接:
func queryData() { conn, err := db.Conn() if err != nil { fmt.Println(err) return } defer conn.Close() rows, err := conn.Query("SELECT * FROM users") if err != nil { fmt.Println(err) return } defer rows.Close() for rows.Next() { // 处理查询结果 } }
在上述代码中,我们通过调用`db.Conn()`方法来获取一个数据库连接,并在使用完之后通过`conn.Close()`方法释放连接。这样可以确保让其他请求能够共享该连接,提高效率。
下面的示例展示了如何设置连接池的相关参数:
func init() { var err error db, err = sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test") if err != nil { fmt.Println(err) return } db.SetMaxOpenConns(100) db.SetMaxIdleConns(10) }
在上述代码中,我们将连接池的最大打开连接数设置为100,最大空闲连接数设置为10。这样可以根据实际需求合理分配连接资源,避免造成过多的连接浪费。