package DAL import ( "database/sql" "flx/Common" "fmt" "net/url" _ "github.com/go-sql-driver/mysql" log "github.com/sirupsen/logrus" _ "kingbase.com/gokb" ) var cdb *sql.DB // /connect the database func DBConnect() (*sql.DB, error) { defer func() { if r := recover(); r != nil { log.Error("DBConnect:", r) } }() cfig := Common.LoadConfig() // connStr := "host=" + cfig.Kingbase.IP + " user=" + cfig.Kingbase.Username + " password=" + cfig.Kingbase.Password + " dbname=" + cfig.Kingbase.Name + " sslmode=disable" password := url.QueryEscape(cfig.Kingbase.Password) connStr := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local&tls=skip-verify", cfig.Kingbase.Username, password, cfig.Kingbase.IP, 3306, // 确保这是数值类型(如 3306) cfig.Kingbase.Name, ) db, err := sql.Open("mysql", connStr) if err != nil { fmt.Println(err.Error()) return nil, err } err = db.Ping() if err != nil { fmt.Println(err.Error()) return nil, err } return db, nil } func ConntectDB() *sql.DB { defer func() { if r := recover(); r != nil { log.Error("ConntectDB:", r) } }() if cdb == nil { cdb, _ = DBConnect() } return cdb } // close the database connect func CloseDB() bool { defer func() { if r := recover(); r != nil { log.Error("CloseDB:", r) } }() if cdb != nil { err := cdb.Close() if err != nil { fmt.Println(err.Error()) return false } return true } return false } func Text() { defer func() { if r := recover(); r != nil { log.Error("Text:", r) } }() // connStr := "host=114.64.231.197 user=SYSTEM password=system dbname=dbcongress sslmode=disable" connStr := "host=127.0.0.1 user=SYSTEM password=system dbname=dbcongress sslmode=disable" db, err := sql.Open("kingbase", connStr) if err != nil { fmt.Println(err.Error()) } err = db.Ping() if err != nil { fmt.Println(err.Error()) } rows, err := db.Query("SELECT \"St_ID\",\"St_Name\" FROM dbcongress.t_staffinfo") if err != nil { fmt.Println(err.Error()) } defer rows.Close() var St_ID, St_Name string for rows.Next() { err := rows.Scan(&St_ID, &St_Name) if err != nil { break } fmt.Println(St_ID, St_Name) } db.Close() }