| 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 | |
| }
 |