db.go 985 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package main
  2. import (
  3. "os"
  4. )
  5. func queryInt(sql string, params ...interface{}) (int, os.Error) {
  6. query, err := db.Prepare(sql)
  7. if err != nil {
  8. return 0, err
  9. }
  10. err = query.BindParams(params...)
  11. if err != nil {
  12. return 0, err
  13. }
  14. err = query.Execute()
  15. if err != nil {
  16. return 0, err
  17. }
  18. var result int
  19. query.BindResult(&result)
  20. eof, err := query.Fetch()
  21. if err != nil {
  22. return 0, err
  23. } else if eof {
  24. return 0, os.EOF
  25. }
  26. err = query.FreeResult()
  27. if err != nil {
  28. return 0, err
  29. }
  30. return result, nil
  31. }
  32. // given an id ('abcd1234'), return the pid (1)
  33. func getpid(id string) int {
  34. query, err := db.Prepare("SELECT `pid` FROM `playlist` WHERE `id` = ?")
  35. if err != nil {
  36. return -1
  37. }
  38. err = query.BindParams(id)
  39. if err != nil {
  40. return -1
  41. }
  42. err = query.Execute()
  43. if err != nil {
  44. return -1
  45. }
  46. var pid int
  47. query.BindResult(&pid)
  48. _, err = query.Fetch()
  49. if err != nil {
  50. return -1
  51. }
  52. err = query.FreeResult()
  53. if err != nil {
  54. return -1
  55. }
  56. return pid
  57. }