tl;博士
我有一个包括数组字段的SQL表users
。如何将其扫描到Golang的变量?我的方法:
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)
用户名的ID都很好。
正如已经指出的@mkopriva,可以使用StringArray
方法或使用更灵活的Array
方法来完成此操作(因为它接受界面作为参数),这两者都在"github.com/lib/pq"
中找到包裹。
顺便说一句,最好使用准备好的陈述。
完整示例:
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
}