select.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package dbBase
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "log"
  6. _ "xg_data_generate/pkg/go-driver-xugusql"
  7. )
  8. type TableInfo struct {
  9. filedName []string
  10. filedType []string
  11. filedLen []int
  12. filedDec []int
  13. }
  14. func GetDbLink(ip string, port string, dbBase string, user string, pwd string) *sql.DB {
  15. var db *sql.DB
  16. var err error
  17. dbLink := fmt.Sprintf("IP=%s;DB=%s;User=%s;"+"PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8", ip, dbBase, user, pwd, port)
  18. db, err = sql.Open("xugusql", dbLink)
  19. if err != nil {
  20. log.Fatal("db open fail")
  21. }
  22. err = db.Ping()
  23. if err != nil {
  24. log.Fatal("db Ping fail")
  25. } else {
  26. log.Printf("db Ping ok")
  27. }
  28. return db
  29. }
  30. func GetAllTables(db *sql.DB, sql string) ([]string, error) {
  31. }
  32. func QueryFieldType(db *sql.DB, sql string) error {
  33. tableInfo := []TableInfo{}
  34. rows, err := db.Query(sql)
  35. if err != nil {
  36. log.Fatal(err)
  37. }
  38. var cols []string
  39. cols, err = rows.Columns()
  40. if err != nil {
  41. log.Fatal(err)
  42. }
  43. colsType, err := rows.ColumnTypes()
  44. if err != nil {
  45. log.Fatal(err)
  46. }
  47. fmt.Println("cols Name:", cols)
  48. // 打印每个列的信息
  49. for _, col := range colsType {
  50. // 获取列的扫描类型
  51. /*ScanType() reflect.Type
  52. 返回 Go 语言中的类型,用于扫描数据库值到该列。用于确定该列的数据应被扫描到什么类型的 Go 变量。*/
  53. scanType := col.ScanType()
  54. fmt.Println("Scan Type:", scanType)
  55. tableInfo = append(tableInfo, TableInfo{
  56. filedName: []string{col.Name()},
  57. filedType: []string{col.DatabaseTypeName()},
  58. })
  59. }
  60. fmt.Println("tableInfo:", tableInfo)
  61. // var sqlResult string
  62. // pvals := make([]interface{}, len(cols))
  63. // for key, _ := range pvals {
  64. // dest := make([]byte, 216)
  65. // pvals[key] = &dest
  66. // } /* end for */
  67. // for rows.Next() {
  68. // err = rows.Scan(pvals...)
  69. // if err != nil {
  70. // log.Fatal(err)
  71. // }
  72. // for _, v := range pvals {
  73. // // fmt.Printf("%s | ", string(*(v.(*[]byte))))
  74. // sqlResult += fmt.Sprintf("%s", string(*(v.(*[]byte))))
  75. // }
  76. // }
  77. rows.Close()
  78. return nil
  79. }