我试图找出我的代码出了什么问题。 当我尝试对每行进行扫描(),这是我的mysql查询返回的值,并将其值写入我创建的结构中时,只有第一列的第一个值会在我的结构中显示,其他所有内容都只是“”。 请帮我。我一无所知。
type Device struct{
device_id string
device_name string
device_type string
device_currentstate string
device_tobestate string
house_name string
room_id string}
func GetUnmappedDevicesFromDb(houseName string) []Device {
db, err := sql.Open("mysql", connectionString)
db.Ping()
statement := "SELECT device_id, device_name, device_type, device_currentstate, device_tobestate, house_name, room_id FROM smarthomed.devices WHERE house_name='" + houseName + "' AND room_id IS NULL;"
stmt, err := db.Prepare(statement)
defer stmt.Close()
rows, err := stmt.Query()
defer rows.Close()
res := []Device{}
for rows.Next() {
d := Device{}
err = rows.Scan(&d.device_id, &d.device_name, &d.device_type, &d.device_currentstate, &d.device_tobestate, &d.house_name, &d.room_id)
res = append(res, d)
if err != nil {
fmt.Println(err)
}
}
if err != nil {
fmt.Println(err)
}
defer db.Close()
return res
}
答案 0 :(得分:0)
我在结构中将字符串更改为sql.NullString,现在从数据库中获取所有数据。 谢谢@mkopriva的帮助。
type Device struct {
device_id string
device_name sql.NullString
device_type string
device_currentstate sql.NullString
device_tobestate sql.NullString
house_name string
room_id sql.NullString
}