SQL库func QueryContext为where子句获取varadic参数。我想创建一个获取varadic参数的helper函数,并将其发送到QueryContext调用。以下是我的代码片段:
func GenericDBSelect(ctx context.Context, qry string, params ...string) (*sql.Rows, error) {
//格式化连接字符串数据库,错误:= sql.Open(“mysql”,连接字符串)
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: unsupported type []string, a slice of string
问题似乎是GenericDBSelect中的参数被接收为[]string而不是... string。
1条答案
按热度按时间ruyhziif1#
进行以下两项更改:
params
在不进行转换的情况下传递。...
语法将可变参数传递给QueryContext:有关详细信息,请参见将参数传递给...参数。