2 回答
TA贡献1825条经验 获得超4个赞
首先,您需要建立您的查询。实际上,您甚至没有使用函数输入。由于我们有可变数量的参数,我们需要做一些工作来构造正确数量的占位符:
query := `select callid, foo from bardata where callid in (` +
strings.Repeat(`?,`, len(callIds) - 1) + `?)`
然后,使用传入的值执行:
rows, err := db.Query(query, callIds...)
if err != nil {
// handle it
}
defer rows.Close()
然后收集结果:
ret := map[string]string{}
for rows.Next() {
var callid, foo string
err = rows.Scan(&callid, &foo)
if err != nil {
// handle it
}
ret[callid] = foo
}
return ret
注意事项:
如果
callIds
是空切片,这将导致占位符不匹配错误。如果可能,那么您需要检测它并单独处理它(可能通过返回错误或空映射 - 不需要查询数据库)。这将返回一个
map[string]string
值是“foo”的任何值。在您的问题中,您有返回 a 的函数,map[string]Records
但没有关于 aRecords
可能是什么或如何获取a 的信息。您可能希望以
sql.ErrNoRows
与其他错误不同的方式处理。
TA贡献2036条经验 获得超8个赞
package main
import (
"fmt"
"github.com/bobby96333/goSqlHelper"
)
func main(){
fmt.Println("hello")
conn,err :=goSqlHelper.MysqlOpen("user:password@tcp(127.0.0.1:3306)/dbname")
checkErr(err)
row,err := conn.QueryRow("select * from table where col1 = ? and col2 = ?","123","abc")
checkErr(err)
if *row==nil {
fmt.Println("no found row")
}else{
fmt.Printf("%+v",row)
}
}
func checkErr(err error){
if err!=nil {
panic(err)
}
}
输出:
&map[col1:abc col2:123]
- 2 回答
- 0 关注
- 170 浏览
添加回答
举报