db.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package dbBase
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "time"
  6. _ "xg_once_query/go-driver-xugusql"
  7. "xg_once_query/setting"
  8. log "github.com/sirupsen/logrus"
  9. )
  10. func DbInit() *sql.DB {
  11. db := setting.DbInfo.Db
  12. ip := setting.DbInfo.DbHost
  13. port := setting.DbInfo.DbPort
  14. dbName := setting.DbInfo.DbName
  15. user := setting.DbInfo.DbUser
  16. pwd := setting.DbInfo.DbPassWord
  17. fmt.Println(db, ip, port, dbName, user, pwd)
  18. dataSourceNameL := fmt.Sprintf("IP=%s;DB=%s;User=%s;PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8", ip, dbName, user, pwd, port)
  19. dBase, err := sql.Open(db, dataSourceNameL)
  20. if err != nil {
  21. log.Println("数据库连接失败:", err)
  22. }
  23. return dBase
  24. }
  25. func DbQuery(db *sql.DB, sql string) {
  26. log.Println("sql:", sql)
  27. if len(sql) < 4 {
  28. return
  29. }
  30. if sql[0:4] == "show" || len(sql) < 6 || sql[0:6] == "select" || sql[0:6] == "SELECT" {
  31. rows, err := db.Query(sql)
  32. if err != nil {
  33. log.Println("数据库查询失败:", err)
  34. return
  35. }
  36. //获取表列名
  37. colHeads, err := rows.Columns()
  38. if err != nil {
  39. log.Println("DbQuery:获取表列名失败", err)
  40. return
  41. }
  42. //表数据空间生成
  43. pvals := make([]interface{}, len(colHeads))
  44. for key := range pvals {
  45. dest := make([]byte, 216)
  46. pvals[key] = &dest
  47. }
  48. if len(colHeads) < 9 {
  49. TablePrint(rows, colHeads, pvals)
  50. } else {
  51. TablePrints(rows, colHeads, pvals)
  52. }
  53. } else {
  54. fmt.Println("非查询语句")
  55. return
  56. }
  57. }
  58. func DbExec(db *sql.DB, sql string) {
  59. startTime := time.Now()
  60. result, err := db.Exec(sql)
  61. if err != nil {
  62. log.Println(err)
  63. return
  64. }
  65. lastInsertID, _ := result.LastInsertId()
  66. rowsAffected, _ := result.RowsAffected()
  67. duration := time.Since(startTime) // 计算执行时间
  68. fmt.Printf("SQL 执行耗时: %s\n", duration)
  69. fmt.Printf("Last Insert ID: %d\n", lastInsertID)
  70. fmt.Printf("Rows Affected: %d\n", rowsAffected)
  71. }