猿问

如何在不知道列的情况下从表读取行到地图

在我的golang应用程序中,我需要对MySQL执行SQL查询以获取单行并将结果放入map [string] string中,这些键是列名。


但是我不知道列将是什么。查询就像


SELECT * FROM mytable

我使用“ database / sql”。


我发现只有扫描功能


db.QueryRow("SELECT * FROM mytable").Scan(&var1, &var2,...)

但这不适用于我的情况。我不知道会有多少个变量。而且我还需要列名。


是否可以使用database / sql?


更新。我找到了解决部分问题的方法。如何从结果集中获取列名。


rows, err := db.Query(sqlcommand)


cols, err := rows.Columns()

因此,我可以用来制作地图的钥匙。但是我仍然不知道如何获得价值。因为,值可以具有不同的类型。


data = make(map[string]string)


if rows.Next() {

    columns := make([]interface{}, len(cols))

    columnPointers := make([]interface{}, len(cols))

    for i, _ := range columns {

        columnPointers[i] = &columns[i]

    }


    err = rows.Scan(columnPointers...)


    for i, colName := range cols {

        // value is in columns[i] of interface type.

        // How to extract it from here? 

        // ....

        data[colName] = val

    }

}

PS此问题不是“在mysql中获取表列名称?”的重复项。我想获取返回的数据集的列,而不仅仅是一个表。


明月笑刀无情
浏览 234回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答