扫描阵列将DB字段键入Golang中的数组/切片



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
}

最新更新