Golang mysql select *语句仅返回第一个值

时间:2018-09-03 20:59:37

标签: mysql sql go

我试图找出我的代码出了什么问题。 当我尝试对每行进行扫描(),这是我的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

}

struct after scan() method

device table in mysql database

1 个答案:

答案 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

}