亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 db.query 讀取數據時,除了掃描之外還有其他方法嗎?

從 db.query 讀取數據時,除了掃描之外還有其他方法嗎?

Go
人到中年有點甜 2023-02-21 19:10:59
當我使用掃描時,我必須事先將所有變量寫入掃描。我需要一個解決方案,我可以使用像 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 stringval:= fmt.Sprintf("%s , %s",unit_name,unit_position_name)row[val]
查看完整描述

1 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

以下是如何在不顯式聲明行中值的變量的情況下掃描行。


為值做一個切片。用這些值的地址做一個切片。掃描到地址。


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])

        }

    }

}


查看完整回答
反對 回復 2023-02-21
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號