query.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package orm
  2. import (
  3. "bswas/utilities"
  4. "database/sql"
  5. )
  6. func query(sqlStr string,db *sql.DB)(list []map[string]string) {
  7. rows,err := db.Query(sqlStr)
  8. if err != nil {
  9. utilities.WriteLog("/orm/query.go:11 SQL执行错误!("+sqlStr+")","ERROR")
  10. return
  11. }
  12. //字段名称
  13. columns, _ := rows.Columns()
  14. //多少个字段
  15. length := len(columns)
  16. //每一行字段的值
  17. values := make([]sql.RawBytes, length)
  18. //保存的是values的内存地址
  19. pointer := make([]interface{}, length)
  20. for i := 0; i < length; i++ {
  21. pointer[i] = &values[i]
  22. }
  23. for rows.Next() {
  24. //把参数展开,把每一行的值存到指定的内存地址去,循环覆盖,values也就跟着被赋值了
  25. err := rows.Scan(pointer...)
  26. if err != nil {
  27. utilities.WriteLog("/orm/query.go:31 结果集转换错误!("+sqlStr+")","ERROR")
  28. return
  29. }
  30. //每一行
  31. row := make(map[string]string)
  32. for i := 0; i < length; i++ {
  33. row[columns[i]] = string(values[i])
  34. }
  35. list = append(list, row)
  36. }
  37. _ = rows.Close()
  38. return
  39. }
  40. func GetMysqlData(sqlStr string)(list []map[string]string) {
  41. db, err := utilities.Mysql()
  42. if err != nil {
  43. utilities.WriteLog("/orm/query.go:47 Mysql数据库连接错误!","ERROR")
  44. return
  45. }
  46. return query(sqlStr, db)
  47. }
  48. func GetOracleData(sqlStr string)(list []map[string]string) {
  49. db, err := utilities.Oracle()
  50. if err != nil {
  51. utilities.WriteLog("/orm/query.go:55 Oracle数据库连接错误!","ERROR")
  52. return
  53. }
  54. return query(sqlStr, db)
  55. }