123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package dbBase
- import (
- "database/sql"
- "fmt"
- "log"
- _ "xg_data_generate/pkg/go-driver-xugusql"
- )
- type TableInfo struct {
- filedName []string
- filedType []string
- filedLen []int
- filedDec []int
- }
- func GetDbLink(ip string, port string, dbBase string, user string, pwd string) *sql.DB {
- var db *sql.DB
- var err error
- dbLink := fmt.Sprintf("IP=%s;DB=%s;User=%s;"+"PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8", ip, dbBase, user, pwd, port)
- db, err = sql.Open("xugusql", dbLink)
- if err != nil {
- log.Fatal("db open fail")
- }
- err = db.Ping()
- if err != nil {
- log.Fatal("db Ping fail")
- } else {
- log.Printf("db Ping ok")
- }
- return db
- }
- func GetAllTables(db *sql.DB, sql string) ([]string, error) {
- }
- func QueryFieldType(db *sql.DB, sql string) error {
- tableInfo := []TableInfo{}
- rows, err := db.Query(sql)
- if err != nil {
- log.Fatal(err)
- }
- var cols []string
- cols, err = rows.Columns()
- if err != nil {
- log.Fatal(err)
- }
- colsType, err := rows.ColumnTypes()
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println("cols Name:", cols)
- // 打印每个列的信息
- for _, col := range colsType {
- // 获取列的扫描类型
- /*ScanType() reflect.Type
- 返回 Go 语言中的类型,用于扫描数据库值到该列。用于确定该列的数据应被扫描到什么类型的 Go 变量。*/
- scanType := col.ScanType()
- fmt.Println("Scan Type:", scanType)
- tableInfo = append(tableInfo, TableInfo{
- filedName: []string{col.Name()},
- filedType: []string{col.DatabaseTypeName()},
- })
- }
- fmt.Println("tableInfo:", tableInfo)
- // var sqlResult string
- // pvals := make([]interface{}, len(cols))
- // for key, _ := range pvals {
- // dest := make([]byte, 216)
- // pvals[key] = &dest
- // } /* end for */
- // for rows.Next() {
- // err = rows.Scan(pvals...)
- // if err != nil {
- // log.Fatal(err)
- // }
- // for _, v := range pvals {
- // // fmt.Printf("%s | ", string(*(v.(*[]byte))))
- // sqlResult += fmt.Sprintf("%s", string(*(v.(*[]byte))))
- // }
- // }
- rows.Close()
- return nil
- }
|