db_query_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package xugutest
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "log"
  6. "testing"
  7. _ "xugu_driver/xugu"
  8. )
  9. func openDb() (*sql.DB, error) {
  10. return sql.Open("xugusql",
  11. "IP=10.28.20.101;DB=SYSTEM;User=SYSDBA;PWD=SYSDBA;Port=5190;AUTO_COMMIT=on;CHAR_SET=UTF8")
  12. }
  13. var db *sql.DB
  14. func init() {
  15. var err error
  16. db, err = openDb()
  17. if err != nil {
  18. log.Fatal(err)
  19. }
  20. }
  21. func TestPing(t *testing.T) {
  22. err := db.Ping()
  23. if err != nil {
  24. fmt.Printf("connect xugu dbms ... failed\n")
  25. } else {
  26. fmt.Printf("connect xugu dbms ... ok\n")
  27. }
  28. }
  29. func TestQuery(t *testing.T) {
  30. rows, err := db.Query("select * from gotest")
  31. if err != nil {
  32. log.Fatal(err)
  33. }
  34. var cols []string
  35. cols, err = rows.Columns()
  36. if err != nil {
  37. log.Fatal(err)
  38. }
  39. pvals := make([]interface{}, len(cols))
  40. for key, _ := range pvals {
  41. dest := make([]byte, 216)
  42. pvals[key] = &dest
  43. } /* end for */
  44. for rows.Next() {
  45. err = rows.Scan(pvals...)
  46. if err != nil {
  47. log.Fatal(err)
  48. }
  49. for _, v := range pvals {
  50. fmt.Printf("获取到的数据 为%s\t", string(*(v.(*[]byte))))
  51. }
  52. fmt.Printf("\n")
  53. }
  54. rows.Close()
  55. }
  56. func TestStmtQuery(t *testing.T) {
  57. stmt, _ := db.Prepare("select * from gotest where name = ?;")
  58. rows, err := stmt.Query("'gc'")
  59. if err != nil {
  60. log.Fatal(err)
  61. }
  62. var cols []string
  63. cols, err = rows.Columns()
  64. if err != nil {
  65. log.Fatal(err)
  66. }
  67. pvals := make([]interface{}, len(cols))
  68. for key, _ := range pvals {
  69. dest := make([]byte, 216)
  70. pvals[key] = &dest
  71. } /* end for */
  72. for rows.Next() {
  73. err = rows.Scan(pvals...)
  74. if err != nil {
  75. log.Fatal(err)
  76. }
  77. for _, v := range pvals {
  78. fmt.Printf("%s\t", string(*(v.(*[]byte))))
  79. }
  80. fmt.Printf("\n")
  81. }
  82. rows.Close()
  83. }