56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package mmysql
|
|
|
|
import (
|
|
"../config"
|
|
"database/sql"
|
|
"log"
|
|
"strings"
|
|
//导入mysql的驱动
|
|
_ "github.com/go-sql-driver/mysql"
|
|
)
|
|
|
|
type ServiceStatus struct {
|
|
Id int32 `json:"id"`
|
|
Cost int64 `json:"cost"`
|
|
Status bool `json:"status"`
|
|
Ip string `json:"ip"`
|
|
Area string `json:"area"`
|
|
}
|
|
|
|
func clearTransaction(tx *sql.Tx) {
|
|
err := tx.Rollback()
|
|
if err != sql.ErrTxDone && err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
}
|
|
|
|
func SaveServiceStatus(s []*ServiceStatus) bool {
|
|
var myconn config.MysqlConf
|
|
myconn.GetMysqlConn()
|
|
path := strings.Join([]string{myconn.User, ":", myconn.Passwd, "@tcp(", myconn.Conn, ")/", "services", "?charset=utf8"}, "")
|
|
//打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql"
|
|
db, _ := sql.Open("mysql", path)
|
|
tx, err := db.Begin()
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
defer clearTransaction(tx)
|
|
|
|
stmt, err := db.Prepare("INSERT INTO services_status(id, cost, status,ip,area) VALUES (?,?,?,?,?)")
|
|
|
|
if err != nil {
|
|
log.Panic("db prepare faild!", err)
|
|
}
|
|
stmtTx := tx.Stmt(stmt)
|
|
var rs sql.Result
|
|
for _, row := range s {
|
|
rs, _ = stmtTx.Exec(row.Id, row.Cost, row.Status, row.Ip, row.Area)
|
|
}
|
|
_ = tx.Commit()
|
|
if n, _ := rs.RowsAffected(); n > 0 {
|
|
log.Print("成功")
|
|
return true
|
|
}
|
|
return false
|
|
}
|