123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- package main
- import (
- "database/sql"
- "fmt"
- "log"
- _ "xugu_driver/xugu"
- )
- func main() {
- db, err := sql.Open("xugusql", "IP=10.28.20.101;DB=SYSTEM;User=SYSDBA;PWD=SYSDBA;Port=5190;AUTO_COMMIT=on;CHAR_SET=UTF8")
- //_, err = db.Exec("create table go_test(c1 int, c2 varchar);")
- //db.Ping()
- if err != nil {
- log.Fatal(err)
- }
- // err = db.Ping()
- // if err != nil {
- // fmt.Printf("connect xugu dbms ... failed\n")
- // } else {
- // fmt.Printf("connect xugu dbms ... ok\n")
- // }
- // stmt, err := db.Prepare("SELECT ? FROM gotest2;")
- // stmt.Query("1")
- //查询
- // row, err := db.Query("select 1 from gotest2;")
- // if err != nil {
- // fmt.Println("查询错误", err)
- // }
- // col, _ := row.Columns()
- // fmt.Println("row.Columns(): ", col)
- // fmt.Println("len(col)", len(col))
- // pvals := make([]interface{}, len(col))
- // for key, _ := range pvals {
- // dest := make([]byte, 216)
- // pvals[key] = &dest
- // } /* end for */
- // for row.Next() {
- // row.Scan(pvals...)
- // for _, v := range pvals {
- // //fmt.Printf("pvals:%v\t \n", v) binary.LittleEndian.Uint32(col.Col_Data)
- // //fmt.Printf("第%d次: %s\t", k, string(*(v.(*[]byte))))
- // // fmt.Printf("pvals:%v\t \n", (v.(*[]byte)))
- // fmt.Printf("结果 %s\t", string(*(v.(*[]byte))))
- // }
- // fmt.Printf("\n")
- // }
- //消息类型为E
- // r, err := db.Exec("drop table ta3;drop table ta4;")
- // r.RowsAffected()
- // db.Exec("INSERT INTO gotest VALUES('gt3');")
- //db.Prepare
- // stmt, err := db.Prepare("INSERT INTO gotest values(?);")
- // if err != nil {
- // log.Fatal(err)
- // }
- // ret, err := stmt.Exec("gt32")
- // if err != nil {
- // log.Fatal(err)
- // }
- // fmt.Println("ret", ret)
- //db.Exec
- //db.Exec("INSERT INTO gotest2 VALUES(1, 'gt3');")
- //db.Query
- // rows, err := db.Query("select * from gotest")
- // if err != nil {
- // log.Fatal(err)
- // }
- // var cols []string
- // cols, err = rows.Columns()
- // if err != nil {
- // log.Fatal(err)
- // }
- // pvals := make([]interface{}, len(cols))
- // for key, _ := range pvals {
- // dest := make([]byte, 216)
- // pvals[key] = &dest
- // } /* end for */
- // for rows.Next() {
- // err = rows.Scan(pvals...)
- // if err != nil {
- // log.Fatal(err)
- // }
- // for _, v := range pvals {
- // fmt.Printf("%s\t", string(*(v.(*[]byte))))
- // }
- // fmt.Printf("\n")
- // }
- // rows.Close()
- //插入blob
- //db.Exec("create table goblob(a int, b blob);")
- // 打开文件
- // file, err := os.Open("todo.txt")
- // if err != nil {
- // log.Fatal(err)
- // }
- // defer file.Close()
- // 读取文件内容
- // content, err := io.ReadAll(file)
- // if err != nil {
- // log.Fatal(err)
- // }
- //db.Exec("insert into goblob values(1, ?);", content)
- //stmt方式插入
- // stmt, err := db.Prepare("insert into goblob values(1, ?);")
- // if err != nil {
- // fmt.Println("error", err)
- // }
- // _, err = stmt.Exec(content)
- // if err != nil {
- // fmt.Println("error", err)
- // }
- //查询blob
- rows, err := db.Query("select b from goblob;")
- if err != nil {
- fmt.Println("error", err)
- }
- var cols []string
- cols, err = rows.Columns()
- if err != nil {
- log.Fatal(err)
- }
- pvals := make([]interface{}, len(cols))
- for key, _ := range pvals {
- dest := make([]byte, 216)
- pvals[key] = &dest
- } /* end for */
- for rows.Next() {
- fmt.Println("rows.Next()")
- err = rows.Scan(pvals...)
- if err != nil {
- log.Fatal(err)
- }
- for _, v := range pvals {
- fmt.Printf("aa %s\t", string(*(v.(*[]byte))))
- }
- fmt.Printf("\n")
- }
- rows.Close()
- db.Close()
- }
|