在Golang中将数组类型的DB字段扫描到数组/切片中

5

简述:

我有一个 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 和 username,运作良好。


你使用的是哪个驱动程序? - mkopriva
postgres / (pq) - i am jack's wasted life
1
https://godoc.org/github.com/lib/pq#StringArray - mkopriva
谢谢,这很有帮助。 - i am jack's wasted life
1个回答

7

正如 @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
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接