package xugutest import ( "database/sql" "fmt" "log" "testing" _ "xugu_driver/xugu" ) func openDb() (*sql.DB, error) { return sql.Open("xugusql", "IP=10.28.20.101;DB=SYSTEM;User=SYSDBA;PWD=SYSDBA;Port=5190;AUTO_COMMIT=on;CHAR_SET=UTF8") } var db *sql.DB func init() { var err error db, err = openDb() if err != nil { log.Fatal(err) } } func TestPing(t *testing.T) { err := db.Ping() if err != nil { fmt.Printf("connect xugu dbms ... failed\n") } else { fmt.Printf("connect xugu dbms ... ok\n") } } func TestQuery(t *testing.T) { 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() } func TestStmtQuery(t *testing.T) { stmt, _ := db.Prepare("select * from gotest where name = ?;") rows, err := stmt.Query("'gc'") 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() }