SQL库func QueryContext为where子句接受可变参数。我想创建一个helper函数,它接受可变参数并将其发送给QueryContext调用。
下面是我的代码片段:
func GenericDBSelect(ctx context.Context, qry string, params ...string) (*sql.Rows, error) {
// format the connectstr
db, err := sql.Open("mysql", connectstr)
if err != nil || db == nil {
msg := "could not get db connection. Is DB available?"
return nil, fmt.Errorf(msg)
}
rows, err := db.QueryContext(ctx, qry, params)
if err != nil {
msg := fmt.Sprintf("Could not prep query = %v, params = %v. Error = %v ", qry, params, err)
return nil, fmt.Errorf(msg)
}
return rows, err
}
字符串
我这样称呼它:
rows, err := GenericDBSelect(ctx, qry, param1, param2)
型
当我运行这段代码时,它会抛出以下错误:
SQL:converting argument $1 type:不支持的类型[]string,字符串的一个片段
问题似乎是GenericDBSelect中的参数被接收为[]string而不是... string。
1条答案
按热度按时间6tr1vspr1#
进行以下两项更改:
params
可以在不进行转换的情况下通过。字符串
...
语法将可变参数传递给QueryContext:型
请参阅将参数传递给...的双曲余弦值。