golang查询数据后,获取内容出错问题
<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("========================")
//
// }