我有 2 列如果表accounts:oid和balanceoid通過下一個代碼,我嘗試提取balance:// variable `id` comes from an another partsqlstr := `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 stringvar bal float64q.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。
1 回答

鴻蒙傳說
TA貢獻1865條經驗 獲得超7個贊
試試這個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
- 1 回答
- 0 關注
- 184 瀏覽
添加回答
舉報
0/150
提交
取消