services_perform/cmd/mmysql/servicestatus.go
2020-10-13 19:05:29 +08:00

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
}