更新时间:2026-07-28 GMT+08:00
分享

处理结果集

执行SELECT语句查询数据后,可以使用type Rows接口和type Row接口对数据结果集进行处理。type Row接口用于处理单行结果,提供(r *Row)Scan(dest ...interface{})方法将数据扫描到指定的变量。type Rows接口用于处理多行结果,提供遍历方法(rs *Rows)Next()和数据扫描方法(rs *Rows)Scan(dest ...interface{})进行逐行扫描。

示例如下(完整示例请参考典型应用开发示例的示例一):

调用QueryRow方法查询单行数据后,使用type Row接口的Scan方法将这一行数据扫描到指定的变量。

  1. 定义变量,用于接收数据结果集。

    var f1 int
    var f2 string
    var f3 float64
    var f4 time.Time
    var f5 bool

  2. 使用type Row接口的Scan方法将单行数据扫描到指定的变量。

    err = row.Scan(&f1, &f2, &f3, &f4, &f5) 
    if err != nil {
       log.Fatal(err)
    } else {
       fmt.Printf("f1:%v, f2:%v, f3:%v, f4:%v, f5:%v\n", f1, f2, f3, f4, f5)
    }

调用Query方法返回多行数据后,使用for循环和type Rows接口的Next和Scan方法逐行将数据扫描到指定的变量。

  1. 定义变量,用于接收数据结果集。

    var f1 int
    var f2 string
    var f3 float64
    var f4 time.Time
    var f5 bool

  2. 使用for循环和type Rows接口的Next和Scan方法逐行将数据扫描到指定的变量。

    for rows.Next() {
       err = rows.Scan(&f1, &f2, &f3, &f4, &f5)
       if err != nil {
          log.Fatal(err)
       } else {
          fmt.Printf("f1:%v, f2:%v, f3:%v, f4:%v, f5:%v\n", f1, f2, f3, f4, f5)
       }
    }

相关文档