Skip to content

QueryRow

QueryRow 执行的查询预期最多返回一行。QueryRow 始终返回非 nil 值,错误将延迟到调用 Row 的 Scan 方法之前。如果查询未选择任何行,则在调用 Scan 时返回 ErrNoRows;否则,返回结果集中的第一行,并丢弃其余的行。

函数语法

func (s *Stmt) QueryRow (args ...interface{}) *Row

示例

package main

import (
   _ "./go-driver-xugusql"
   "database/sql"
   “log”
   “fmt”
)

func main() {

   db, _ := sql.Open("xugusql", "IP=192.168.78.130;"+
       "DB=SYSTEM;User=SYSDBA;PWD=SYSDBA;"+
       "Port=5138;AUTO_COMMIT=on;CHAR_SET=UTF8")

   stmt, _ := db.Prepare("select c1,c2,c3 from go_1th;")
   row := stmt.QueryRow()

   pvals := make([]interface{}, 3)
   for key, _ := range pvals {
       dest := make([]byte, 216)
       pvals[key] = &dest
   }

   err := row.Scan(pvals...)
   if err != nil {
       log.Fatal(err)
   }

   for _, v := range pvals {
       fmt.Printf("%s\t", string(*(v.(*[]byte))))
   }
   fmt.Printf("\n")

   db.Close()

}