我用的github.com/go-sql-driver/mysql
这个驱动,我像下面这样写没有报错,但是里面的数据为空或者0
type data struct {
id int
name string
weight int
}
rows, _ := db.Query("select * from test where id = ?", 2)
for rows.Next() {
line := data{}
err = rows.Scan(&line)
log.Println(line)
}
运行结果
2017/07/17 13:37:50 {0 0}
存到map的代码
rows, _ := db.Query("select * from test where id = ?", 2)
columns, _ := rows.Columns()
length := len(columns)
for rows.Next() {
value := make([]interface{}, length)
columnPointers := make([]interface{}, length)
for i:=0;i<length;i++ {
columnPointers[i] = &value[i]
}
rows.Scan(columnPointers...)
data := make(map[string]interface{})
for i:=0;i<length;i++ {
columnName := columns[i]
columnValue := columnPointers[i].(*interface{})
data[columnName] = *columnValue
}
log.Print(data)
}
有效果,但是看不懂为何要这样写
你的应该报错了,你把
err
打出来看就你的代码,你不能这么
scan
, 你应该rows.Scan(&line.id, &line.name, &line.weight)