从 db.query 读取数据时,除了扫描之外还有其他方法吗?

当我使用扫描时,我必须事先将所有变量写入扫描。我需要一个解决方案,我可以使用像 sprintf 这样的东西来使用数据


有没有一种方法可以在不定义变量的情况下访问数据?


    func (dbs *item) ReadQuery() {

        var (

            unit_name, unit_position_name string

        )


        rows, err := db.Query(dbs.query)


        for rows.Next() {

            rows.Scan(&unit_name, &unit_position_name)


            if err != nil {

                log.Fatal(err)

            }


        }


    }

例如;


row["unit_name"]

或者


unit_name,unit_position string


val:= fmt.Sprintf("%s , %s",unit_name,unit_position_name)

row[val]


人到中年有点甜
浏览 93回答 1
1回答

炎炎设计

以下是如何在不显式声明行中值的变量的情况下扫描行。为值做一个切片。用这些值的地址做一个切片。扫描到地址。func example(db *sql.DB, query string) {    rows, err := db.Query(query)    if err != nil {        log.Fatal(err)    }    cols, err := rows.Columns()    if err != nil {        log.Fatal(err)    }    addrs := make([]any, len(cols))    for rows.Next() {        values := make([]any, len(cols))        for i := range addrs {            addrs[i] = &values[i]        }        rows.Scan(addrs...)        if err != nil {            log.Fatal(err)        }        // The variable values contains the row values.        // Here's an example of how to use the values.          // Replace the for loop with your code to        // process the row.        for i := range cols {            fmt.Printf("%s: %v\n", cols[i], values[i])        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP