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

I'm trying to figure out what's wrong with my code. When I try to scan() every row, which is returned by my mysql query and write it's values inside a struct I've created, only the first value of the first column will show in my struct everything else is just "". Please help me. I'm totaly clueless.

    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

I changed string to sql.NullString in my struct and am now getting all the data from the database. Thank you @mkopriva for your help.

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

}