[英]Scan array typed DB field into array/slice in Golang
tl; tl; dr
博士
I have an sql table users
which includes an array field. 我有一个SQL表
users
,其中包括一个数组字段。 How can I Scan it to variable in golang? 如何在golang中将其扫描到变量? My approach:
我的方法:
var id int
var username string
var activites []string
row := db.QueryRow("SELECT id, username, activities FROM users WHERE id = 1")
err := row.Scan(&id, &username, &activites)
Works fine for id, username. 适用于ID,用户名。
As @mkopriva already pointed out, this can either be accomplished using the StringArray
method or with the more flexible Array
method (as it accepts an interface as the argument), both found within the "github.com/lib/pq"
package. 正如@mkopriva所指出的那样,可以使用
StringArray
方法或更灵活的Array
方法(因为它接受一个接口作为参数)来完成此任务,它们都可以在"github.com/lib/pq"
包中找到。
As an aside, it is also a good practice to use prepared statements. 顺便说一句,使用准备好的语句也是一种好习惯。
Full example: 完整示例:
var id int
var username string
var activities []string
sqlStatement := `
SELECT
id,
username,
activities
FROM
users
WHERE
id = $1
`
stmt, err := db.Prepare(sqlStatement)
if err != nil {
// handle err
}
defer stmt.Close()
row := stmt.QueryRow(1)
err = row.Scan(
&id,
&username,
pq.Array(&activities) // used here
)
if err == sql.ErrNoRows {
// handle err
}
if err != nil {
// handle err
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.