package dbquery
|
|
|
|
import (
|
|
"database/sql"
|
|
"errors"
|
|
"fmt"
|
|
"strconv"
|
|
|
|
"log"
|
|
|
|
"time"
|
|
|
|
_ "github.com/denisenkom/go-mssqldb"
|
|
)
|
|
|
|
var MSDB_CONN *sql.DB
|
|
|
|
func MSConnect(DBHOST, DBUSER, DBPWD, DBNAME, DBPORT, encrypt string, conns ...int) error {
|
|
|
|
log.Println("msdb connectting...")
|
|
|
|
var dbConnErr error
|
|
|
|
if DBHOST != "" && DBUSER != "" && DBPWD != "" && DBPORT != "" { //&& DBNAME != ""
|
|
|
|
for i := 0; i < 10; i++ {
|
|
|
|
//连接字符串
|
|
|
|
db_port, _ := strconv.Atoi(DBPORT)
|
|
|
|
params := "server=%s;port=%d;database=%s;user id=%s;password=%s"
|
|
if encrypt != "" {
|
|
params = params + ";encrypt=" + encrypt
|
|
}
|
|
|
|
connString := fmt.Sprintf(params, DBHOST, db_port, DBNAME, DBUSER, DBPWD)
|
|
|
|
log.Println(connString)
|
|
|
|
//建立连接
|
|
|
|
MSDB_CONN, dbConnErr = sql.Open("mssql", connString)
|
|
|
|
if dbConnErr != nil {
|
|
log.Println("ERROR", "can not connect to Database, ", dbConnErr)
|
|
time.Sleep(time.Second * 5)
|
|
} else {
|
|
|
|
err = MSDB_CONN.Ping()
|
|
|
|
log.Println("msdb connected", err)
|
|
|
|
break
|
|
}
|
|
}
|
|
|
|
} else {
|
|
return errors.New("msdb connection params errors")
|
|
}
|
|
|
|
return dbConnErr
|
|
}
|
|
|
|
func CloseMSConn() error {
|
|
if MSDB_CONN != nil {
|
|
return MSDB_CONN.Close()
|
|
}
|
|
return nil
|
|
}
|