INSERT INTO MyTable(姓名,年龄......)

时间:2016-01-13 03:05:34

标签: go

如何使用go standard sql包来构建它,以便其他人可以读取它? 我需要添加许多字段。

result, err := db.Exec(
    "INSERT INTO MyTable (name, age, ...ALLLOOOT...) VALUES ($1, $2, ...ALLLOOOT...)",
    "gopher",
    27,
    ...ALLLOOOT...
)

编辑:奖金问题,您可以使用这样的内容并从db:"..."中提取字段名称吗?

type MyTable struct {
    Age   int64   `db:"age" json:"age"`
    Name  string  `db:"name" json:"name"`
    ....
}

1 个答案:

答案 0 :(得分:1)

有不同的方法可以做到这一点,我所做的一种方法是创建键和值数组,然后您可以使用这些数组来迭代并使用占位符构建查询。

然后,您将使用可变参数填充占位符。

它看起来像这样

keys := []string{"your", "keys", ...}
values := []interface{}{1, "two", ...}
placeholders := make([]string, len(values))
for idx := range values {
    placeholders[idx] = "?"
}
query := fmt.Sprintf("INSERT INTO (%s) VALUES (%s)", strings.Join(keys, ", "), strings.Join(placeholders, ", "))

result, err := db.Exec(query, values...)

此操场显示与fmt.Printf

类似的操作

http://play.golang.org/p/NruF92EJqM