Guest User

Untitled

a guest
Feb 25th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. // wrapping mysql database access
  2. package mydb
  3.  
  4. import (
  5. "database/sql"
  6. _ "github.com/go-sql-driver/mysql"
  7. "log"
  8. )
  9.  
  10. const User = "<user>"
  11. const Password = "<pass>"
  12. const DB = "<dbname>"
  13.  
  14. type MyDB struct {
  15. db *sql.DB
  16. }
  17.  
  18. func (this *MyDB) Connect() {
  19. var err error
  20. this.db, err = sql.Open("mysql", User+":"+Password+"@/"+DB)
  21. if err != nil {
  22. log.Fatal(err)
  23. }
  24. }
  25.  
  26. func (this *MyDB) Close() {
  27. var err error
  28. err = this.db.Close()
  29. if err != nil {
  30. log.Fatal(err)
  31. }
  32. }
  33.  
  34. func (this *MyDB) Query(sql string) *sql.Rows {
  35. rows, err := this.db.Query(sql)
  36. if err != nil {
  37. log.Fatal(err)
  38. }
  39. return rows
  40. }
  41.  
  42. func (this *MyDB) QueryRow(sql string) *sql.Row {
  43. row := this.db.QueryRow(sql)
  44. return row
  45. }
  46.  
  47. func (this *MyDB) FetchAll(sql string) [][]interface{} {
  48. rows, err := this.db.Query(sql)
  49. if err != nil {
  50. log.Fatal(err)
  51. }
  52. defer rows.Close()
  53. columns, _ := rows.Columns()
  54. count := len(columns)
  55. valuePtrs := make([]interface{}, count)
  56. ret := make([][]interface{}, 0)
  57. for rows.Next() {
  58. values := make([]interface{}, count)
  59. for i, _ := range columns {
  60. valuePtrs[i] = &values[i]
  61. }
  62. rows.Scan(valuePtrs...)
  63. for i, _ := range columns {
  64. var v interface{}
  65. val := values[i]
  66. b, ok := val.([]byte)
  67. if ok {
  68. v = string(b)
  69. } else {
  70. v = val
  71. }
  72. values[i] = v
  73. }
  74. ret = append(ret, values)
  75. }
  76. return ret
  77. }
Add Comment
Please, Sign In to add comment