query.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. //
  21. for i := 0; i < length; i++ {
  22. pointer[i] = &values[i]
  23. }
  24. //
  25. for rows.Next() {
  26. //把参数展开,把每一行的值存到指定的内存地址去,循环覆盖,values也就跟着被赋值了
  27. err := rows.Scan(pointer...)
  28. if err != nil {
  29. utilities.WriteLog("/orm/query.go:31 结果集转换错误!("+sqlStr+")","ERROR")
  30. return
  31. }
  32. //每一行
  33. row := make(map[string]string)
  34. for i := 0; i < length; i++ {
  35. row[columns[i]] = string(values[i])
  36. }
  37. list = append(list, row)
  38. }
  39. _ = rows.Close()
  40. return
  41. }
  42. func GetMysqlData(sqlStr string)(list []map[string]string) {
  43. db, err := utilities.Mysql()
  44. if err != nil {
  45. utilities.WriteLog("/orm/query.go:47 Mysql数据库连接错误!","ERROR")
  46. return
  47. }
  48. return query(sqlStr, db)
  49. }
  50. func GetOracleData(sqlStr string)(list []map[string]string) {
  51. db, err := utilities.Oracle()
  52. if err != nil {
  53. utilities.WriteLog("/orm/query.go:55 Oracle数据库连接错误!","ERROR")
  54. return
  55. }
  56. return query(sqlStr, db)
  57. }