You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
2.2 KiB
Go

4 weeks ago
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()
}