package dbBase import ( "database/sql" "fmt" "time" _ "xg_once_query/go-driver-xugusql" "xg_once_query/setting" log "github.com/sirupsen/logrus" ) func DbInit() *sql.DB { db := setting.DbInfo.Db ip := setting.DbInfo.DbHost port := setting.DbInfo.DbPort dbName := setting.DbInfo.DbName user := setting.DbInfo.DbUser pwd := setting.DbInfo.DbPassWord fmt.Println(db, ip, port, dbName, user, pwd) dataSourceNameL := fmt.Sprintf("IP=%s;DB=%s;User=%s;PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8", ip, dbName, user, pwd, port) dBase, err := sql.Open(db, dataSourceNameL) if err != nil { log.Println("数据库连接失败:", err) } return dBase } func DbQuery(db *sql.DB, sql string) { log.Println("sql:", sql) if len(sql) < 4 { return } if sql[0:4] == "show" || len(sql) < 6 || sql[0:6] == "select" || sql[0:6] == "SELECT" { rows, err := db.Query(sql) if err != nil { log.Println("数据库查询失败:", err) return } //获取表列名 colHeads, err := rows.Columns() if err != nil { log.Println("DbQuery:获取表列名失败", err) return } //表数据空间生成 pvals := make([]interface{}, len(colHeads)) for key := range pvals { dest := make([]byte, 216) pvals[key] = &dest } if len(colHeads) < 9 { TablePrint(rows, colHeads, pvals) } else { TablePrints(rows, colHeads, pvals) } } else { fmt.Println("非查询语句") return } } func DbExec(db *sql.DB, sql string) { startTime := time.Now() result, err := db.Exec(sql) if err != nil { log.Println(err) return } lastInsertID, _ := result.LastInsertId() rowsAffected, _ := result.RowsAffected() duration := time.Since(startTime) // 计算执行时间 fmt.Printf("SQL 执行耗时: %s\n", duration) fmt.Printf("Last Insert ID: %d\n", lastInsertID) fmt.Printf("Rows Affected: %d\n", rowsAffected) }