main.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "log"
  6. _ "xugu_driver/xugu"
  7. )
  8. func main() {
  9. db, err := sql.Open("xugusql", "IP=10.28.20.101;DB=SYSTEM;User=SYSDBA;PWD=SYSDBA;Port=5190;AUTO_COMMIT=on;CHAR_SET=UTF8")
  10. //_, err = db.Exec("create table go_test(c1 int, c2 varchar);")
  11. //db.Ping()
  12. if err != nil {
  13. log.Fatal(err)
  14. }
  15. // err = db.Ping()
  16. // if err != nil {
  17. // fmt.Printf("connect xugu dbms ... failed\n")
  18. // } else {
  19. // fmt.Printf("connect xugu dbms ... ok\n")
  20. // }
  21. // stmt, err := db.Prepare("SELECT ? FROM gotest2;")
  22. // stmt.Query("1")
  23. //查询
  24. // row, err := db.Query("select 1 from gotest2;")
  25. // if err != nil {
  26. // fmt.Println("查询错误", err)
  27. // }
  28. // col, _ := row.Columns()
  29. // fmt.Println("row.Columns(): ", col)
  30. // fmt.Println("len(col)", len(col))
  31. // pvals := make([]interface{}, len(col))
  32. // for key, _ := range pvals {
  33. // dest := make([]byte, 216)
  34. // pvals[key] = &dest
  35. // } /* end for */
  36. // for row.Next() {
  37. // row.Scan(pvals...)
  38. // for _, v := range pvals {
  39. // //fmt.Printf("pvals:%v\t \n", v) binary.LittleEndian.Uint32(col.Col_Data)
  40. // //fmt.Printf("第%d次: %s\t", k, string(*(v.(*[]byte))))
  41. // // fmt.Printf("pvals:%v\t \n", (v.(*[]byte)))
  42. // fmt.Printf("结果 %s\t", string(*(v.(*[]byte))))
  43. // }
  44. // fmt.Printf("\n")
  45. // }
  46. //消息类型为E
  47. // r, err := db.Exec("drop table ta3;drop table ta4;")
  48. // r.RowsAffected()
  49. // db.Exec("INSERT INTO gotest VALUES('gt3');")
  50. //db.Prepare
  51. // stmt, err := db.Prepare("INSERT INTO gotest values(?);")
  52. // if err != nil {
  53. // log.Fatal(err)
  54. // }
  55. // ret, err := stmt.Exec("gt32")
  56. // if err != nil {
  57. // log.Fatal(err)
  58. // }
  59. // fmt.Println("ret", ret)
  60. //db.Exec
  61. //db.Exec("INSERT INTO gotest2 VALUES(1, 'gt3');")
  62. //db.Query
  63. // rows, err := db.Query("select * from gotest")
  64. // if err != nil {
  65. // log.Fatal(err)
  66. // }
  67. // var cols []string
  68. // cols, err = rows.Columns()
  69. // if err != nil {
  70. // log.Fatal(err)
  71. // }
  72. // pvals := make([]interface{}, len(cols))
  73. // for key, _ := range pvals {
  74. // dest := make([]byte, 216)
  75. // pvals[key] = &dest
  76. // } /* end for */
  77. // for rows.Next() {
  78. // err = rows.Scan(pvals...)
  79. // if err != nil {
  80. // log.Fatal(err)
  81. // }
  82. // for _, v := range pvals {
  83. // fmt.Printf("%s\t", string(*(v.(*[]byte))))
  84. // }
  85. // fmt.Printf("\n")
  86. // }
  87. // rows.Close()
  88. //插入blob
  89. //db.Exec("create table goblob(a int, b blob);")
  90. // 打开文件
  91. // file, err := os.Open("todo.txt")
  92. // if err != nil {
  93. // log.Fatal(err)
  94. // }
  95. // defer file.Close()
  96. // 读取文件内容
  97. // content, err := io.ReadAll(file)
  98. // if err != nil {
  99. // log.Fatal(err)
  100. // }
  101. //db.Exec("insert into goblob values(1, ?);", content)
  102. //stmt方式插入
  103. // stmt, err := db.Prepare("insert into goblob values(1, ?);")
  104. // if err != nil {
  105. // fmt.Println("error", err)
  106. // }
  107. // _, err = stmt.Exec(content)
  108. // if err != nil {
  109. // fmt.Println("error", err)
  110. // }
  111. //查询blob
  112. rows, err := db.Query("select b from goblob;")
  113. if err != nil {
  114. fmt.Println("error", err)
  115. }
  116. var cols []string
  117. cols, err = rows.Columns()
  118. if err != nil {
  119. log.Fatal(err)
  120. }
  121. pvals := make([]interface{}, len(cols))
  122. for key, _ := range pvals {
  123. dest := make([]byte, 216)
  124. pvals[key] = &dest
  125. } /* end for */
  126. for rows.Next() {
  127. fmt.Println("rows.Next()")
  128. err = rows.Scan(pvals...)
  129. if err != nil {
  130. log.Fatal(err)
  131. }
  132. for _, v := range pvals {
  133. fmt.Printf("aa %s\t", string(*(v.(*[]byte))))
  134. }
  135. fmt.Printf("\n")
  136. }
  137. rows.Close()
  138. db.Close()
  139. }