<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">err = rows.Scan(&user.Id,&user.Name)</span>
if err != nil {
fmt.Println(err)
}
fmt.Println("content:", user)
查询时出错:
sql: expected 21 destination arguments in Scan, not 2
出现原因:
数据库不只两个字段,而你只获取2个字段,所以报错
解决方法1:
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">err = rows.Scan(&user.Id,&user.Name,&user.......)全部获取出来</span>
解决方案2:
rows, err := db.Query(data)
//fmt.Println(db)
if err != nil {
log.Fatalln(err)
}
//字段
cols, _ := rows.Columns()
for i := range cols {
fmt.Print(cols[i])
fmt.Print("\t")
}
// fmt.Println("")
// fmt.Println("=================================")
// values := make([]sql.RawBytes, len(cols))
// scans := make([]interface{}, len(cols))
//
// for i := range values {
//
// scans[i] = &values[i]
//
// }
//
// results := make(map[int]map[string]string)
//
// i := 0
//
// for rows.Next() {
//
// if err := rows.Scan(scans...); err != nil {
//
// fmt.Println("Error")
//
// return
//
// }
//
// row := make(map[string]string)
//
// for j, v := range values {
//
// key := cols[j]
//
// row[key] = string(v)
//
// }
//
// results[i] = row
//
// i++
//
// }
//
// // 打印结果
//
// for i, m := range results {
//
// fmt.Println(i)
//
// for k, v := range m {
//
// fmt.Println(k, " : ", v)
//
// }
//
// fmt.Println("========================")
//
// }
本文详细解析了SQL查询时遇到的常见错误:预期的扫描目标参数数量与实际获取的字段数量不符。通过实例演示了解决方法,包括确保扫描的字段与数据库返回的字段数量一致,并提供了完整的查询流程示例。
791

被折叠的 条评论
为什么被折叠?



