Go Lang,Postgres:扫描后无法获取 oid
Go Lang, Postgres: cannot get oid after Scan
我有 2 列 if table 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
试试这个 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
我有 2 列 if table 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
试试这个 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