猿问

去构建错误“rows.Columns 未定义(类型 *sql.Row 没有字段或方法列)”

我想使用 golang.while buildng 以下代码从我的 postgresql 数据库中打印具有多列的多行


package main


import (

    "database/sql"

    "fmt"

    "github.com/gin-gonic/gin"

    _ "github.com/lib/pq"

    "log"

    "runtime"

)


func main() {


    runtime.GOMAXPROCS(runtime.NumCPU())


    db, err := sql.Open("postgres", "dbname=sample_data user=postgres password=postgres sslmode=disable")

    defer db.Close()

    if err != nil {

        fmt.Println("error connecting to DB")

    }

    r := gin.Default()

    r.GET("/cin_display", func(c *gin.Context) {

        rows := db.QueryRow("SELECT cin FROM companies limit 1;")


        columns, _ := rows.Columns()

        count := len(columns)

        values := make([]interface{}, count)

        valuePtrs := make([]interface{}, count)


        for rows.Next() {


            for i, _ := range columns {

                valuePtrs[i] = &values[i]

            }


            rows.Scan(valuePtrs...)


            for i, col := range columns {


                var v interface{}


                val := values[i]


                b, ok := val.([]byte)


                if ok {

                    v = string(b)

                } else {

                    v = val

                }


                fmt.Println(col, v)

            }

        }


    })

}


func Connect(connectionString string) *sql.DB {

    db, err := sql.Open("postgres", connectionString)

    if err != nil {

        log.Fatal(err)

    }

    return db

}

我收到类似的错误


rows.Columns 未定义(类型 *sql.Row 没有字段或方法列)


rows.Next 未定义(类型 *sql.Row 没有字段或方法 Next)


如何解决这个问题?


守候你守候我
浏览 212回答 2
2回答

慕田峪9158850

QueryRow 返回单个 *sql.Row你想要的是Query,它会给你*sql.Rows你正在尝试使用的方法。

繁花如伊

您在此处屏蔽了 database/sql 包: sql := `select * from table sql 是一个字符串,而不是包。重命名字符串,例如查询,它将起作用
随时随地看视频慕课网APP

相关分类

Go
我要回答