connect.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package sql
  2. import (
  3. "database/sql"
  4. "errors"
  5. "strings"
  6. // _ "github.com/go-sql-driver/mysql"
  7. _ "github.com/go-sql-driver/mysql"
  8. )
  9. //SQL ...
  10. type SQL struct {
  11. db *sql.DB
  12. err error
  13. }
  14. // NewSQL ...
  15. func NewSQL(server, login, mdp, base string) *SQL {
  16. db, err := Connect(server, login, mdp, base)
  17. if err != nil {
  18. panic(err.Error())
  19. }
  20. s := new(SQL)
  21. s.db = db
  22. s.err = err
  23. return s
  24. }
  25. func Connect(server, login, mdp, base string) (*sql.DB, error) {
  26. db, err := sql.Open("mysql", login+":"+mdp+"@tcp("+server+")/"+base)
  27. return db, err
  28. }
  29. /* INSERT
  30. return nombre d'insert
  31. */
  32. func (s *SQL) Insert(table string, cols []string, values [][]string) error {
  33. if cols != nil {
  34. for _, v := range values {
  35. if len(v) != len(cols) {
  36. return errors.New("") // Il n'y a pas le meme nombre de cols dans une ou plusieurs ligne de values
  37. }
  38. }
  39. }
  40. flgA := 0
  41. flgB := 0
  42. lines := ""
  43. for _, value := range values {
  44. if flgB != 0 {
  45. lines += ", "
  46. }
  47. lines += "("
  48. for i := 0; i < len(value); i++ {
  49. if flgA != 0 {
  50. lines += ", "
  51. }
  52. if value[i] != "" {
  53. lines += "'" + value[i] + "'"
  54. } else {
  55. lines += "null"
  56. }
  57. flgA = 1
  58. }
  59. lines += ")"
  60. flgB = 1
  61. flgA = 0
  62. }
  63. sql := "INSERT INTO " + table + " VALUES " + lines + ";"
  64. insert, err := s.db.Query(sql)
  65. if err != nil || insert.Err() != nil {
  66. return errors.New("error syntax : " + sql) // Error syntax sql
  67. }
  68. defer insert.Close()
  69. return nil
  70. }
  71. func (s *SQL) DeleteAND(table string, wheres [][]string) error {
  72. if wheres == nil {
  73. return errors.New("") // Aucune condition
  74. }
  75. lines := ""
  76. flag := 0
  77. for _, where := range wheres {
  78. if flag != 0 {
  79. lines += " AND "
  80. }
  81. lines += where[0] + " = '" + where[1] + "'"
  82. flag = 1
  83. }
  84. sql := "DELETE FROM " + table + " WHERE " + lines + ";"
  85. delete, err := s.db.Query(sql)
  86. if err != nil || delete.Err() != nil {
  87. return errors.New("error syntax : " + sql) // Error syntax
  88. }
  89. defer delete.Close()
  90. return nil
  91. }
  92. func (s *SQL) UpdateAND(table string, sets [][]string, wheres [][]string) error {
  93. if wheres == nil {
  94. return errors.New("") // Aucune condition
  95. }
  96. conds := ""
  97. flag := 0
  98. for _, where := range wheres {
  99. if flag != 0 {
  100. conds += " AND "
  101. }
  102. conds += where[0] + " = '" + where[1] + "'"
  103. flag = 1
  104. }
  105. vls := ""
  106. flagA := 0
  107. for _, set := range sets {
  108. if flagA != 0 {
  109. vls += ", "
  110. }
  111. vls += set[0] + " = '" + set[1] + "'"
  112. flagA = 1
  113. }
  114. sql := "UPDATE " + table + " SET " + vls + " WHERE " + conds + ";"
  115. update, err := s.db.Query(sql)
  116. if err != nil || update.Err() != nil {
  117. return errors.New("error syntax : " + sql) // Error syntax
  118. }
  119. defer update.Close()
  120. return nil
  121. }
  122. func (s *SQL) Select(query string) error {
  123. if (query == "") || (!strings.Contains(query, "SELECT")) ||
  124. (strings.Count(query, ";") != 1 && strings.Index(query, ";")+1 != len(query)) {
  125. return errors.New("") // query format incorrect
  126. }
  127. slct, err := s.db.Query(query)
  128. if err != nil || slct.Err() != nil {
  129. return errors.New("") // retour select incorrect
  130. }
  131. //
  132. return nil
  133. }
  134. func (s *SQL) Close() {
  135. }