猿问

Go Lang,Postgres:扫描后无法获取 oid

我有 2 列如果表accounts:


oid和balance


oid通过下一个代码,我尝试提取balance:


// variable `id` comes from an another part


sqlstr := `SELECT * ` +

    `FROM accounts ` +

    `WHERE oid=` + id + `;`


q, err := db.Query(sqlstr)


if err != nil {

    fmt.Println("Error: GetAccount \n", err)

    return Account{}, err

}

defer q.Close()



var _id string

var bal float64


q.Next()

q.Scan(&_id)

fmt.Println("_id ", _id)



q.Next()

q.Scan(&bal)

fmt.Println("bal ", bal)

在第一个q.Next()我希望提取之后oid,在第二个之后提取balance。


但每次在第一次q.Next()和第二次之后我只得到balance.


我尝试更改sqlstr为下一个:


sqlstr := `SELECT oid, balance ` +

    `FROM accounts ` +

    `WHERE oid=` + id + `;`

但我仍然无法提取oid。


慕姐4208626
浏览 137回答 1
1回答

鸿蒙传说

试试这个q.Scan(&_id, &bal),func (*Row) Scan有这个签名:func (r *Row) Scan(dest ...interface{}) error它期望指向将存储查询数据的值的指针。如果您只查询单行,则可以使用func (*DB) QueryRow()。然后你的代码将简化为row := db.QueryRow(sqlstr) err := row.Scan(&_id, &bal) // err will be sql.ErrNoRows if no rows have been selected
随时随地看视频慕课网APP

相关分类

Go
我要回答