goProject/trunk/goutil/mysqlUtil/dbConn.go
皮蛋13361098506 1b77f62820 初始化项目
2025-01-06 16:01:02 +08:00

138 lines
3.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package mysqlUtil
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"goutil/logUtil"
)
// 打开数据库连接
// connectionString数据库连接字符串格式root:moqikaka3306@tcp(10.1.0.10:3306)/gameserver_data?charset=utf8&parseTime=true&loc=Local&timeout=60s||MaxOpenConns=10||MaxIdleConns=5
// 返回值:
// 数据库对象
// 错误对象
func OpenMysqlConnection(connectionString string) (dbObj *sql.DB, err error) {
dbConfigObj, err1 := NewDBConfig2(connectionString)
if err1 != nil {
err = err1
return
}
dbObj, err = OpenMysqlConnection3(dbConfigObj)
return
}
// 打开数据库连接
// connectionString数据库连接字符串
// maxOpenConns最大打开的连接数
// maxIdleConns最大处于闲置状态的连接数
// 返回值:
// 数据库对象
// 错误对象
func OpenMysqlConnection2(connectionString string, maxOpenConns, maxIdleConns int) (dbObj *sql.DB, err error) {
dbConfigObj := NewDBConfig(connectionString, maxOpenConns, maxIdleConns)
dbObj, err = OpenMysqlConnection3(dbConfigObj)
return
}
// 建立Mysql数据库连接
// dbConfigObj数据库配置对象
// 返回值:
// 数据库对象
// 错误对象
func OpenMysqlConnection3(dbConfigObj *DBConfig) (dbObj *sql.DB, err error) {
// 建立数据库连接
logUtil.DebugLog("开始连接Mysql数据库")
dbObj, err = sql.Open("mysql", dbConfigObj.ConnectionString)
if err != nil {
err = fmt.Errorf("打开游戏数据库失败,连接字符串为:%s", dbConfigObj.ConnectionString)
return
}
logUtil.DebugLog("连接Mysql数据库成功")
if dbConfigObj.MaxOpenConns > 0 && dbConfigObj.MaxIdleConns > 0 {
dbObj.SetMaxOpenConns(dbConfigObj.MaxOpenConns)
dbObj.SetMaxIdleConns(dbConfigObj.MaxIdleConns)
}
if err = dbObj.Ping(); err != nil {
err = fmt.Errorf("Ping数据库失败,连接字符串为:%s,错误信息为:%s", dbConfigObj.ConnectionString, err)
return
}
return
}
// 测试数据库连接
// dbObj:数据库连对象
// 返回值:
// 错误对象
func TestConnection(dbObj *sql.DB) error {
command := "SHOW DATABASES;"
rows, err := dbObj.Query(command)
if err != nil {
return err
}
defer rows.Close()
return nil
}
// 开始事务
// db:数据库对象
// 返回值:
// 事务对象
// 错误对象
func BeginTransaction(dbObj *sql.DB) (*sql.Tx, error) {
tx, err := dbObj.Begin()
if err != nil {
logUtil.Log(fmt.Sprintf("开启事务失败,错误信息:%s", err), logUtil.Error, true)
}
return tx, err
}
// 提交事务
// tx:事务对象
// 返回值:
// 错误对象
func CommitTransaction(tx *sql.Tx) error {
err := tx.Commit()
if err != nil {
logUtil.Log(fmt.Sprintf("提交事务失败,错误信息:%s", err), logUtil.Error, true)
}
return err
}
// 记录Prepare错误
// command执行的SQL语句
// err错误对象
func WritePrepareError(command string, err error) {
logUtil.Log(fmt.Sprintf("Prepare失败错误信息%scommand:%s", err, command), logUtil.Error, true)
}
// 记录Query错误
// command执行的SQL语句
// err错误对象
func WriteQueryError(command string, err error) {
logUtil.Log(fmt.Sprintf("Query失败错误信息%scommand:%s", err, command), logUtil.Error, true)
}
// 记录Exec错误
// command执行的SQL语句
// err错误对象
func WriteExecError(command string, err error) {
logUtil.Log(fmt.Sprintf("Exec失败错误信息%scommand:%s", err, command), logUtil.Error, true)
}
// 记录Scan错误
// command执行的SQL语句
// err错误对象
func WriteScanError(command string, err error) {
logUtil.Log(fmt.Sprintf("Scan失败错误信息%scommand:%s", err, command), logUtil.Error, true)
}