【发布时间】:2013-07-25 15:31:24
【问题描述】:
基本上,在事先不知道查询的结果结构可能是什么的情况下,我想查询数据库,并返回这样的结构(json-y)
// Rows
[
// Row 1
[
{ ColumnName: "id", Value: 1, Type: int },
{ ColumnName: "name", Value: "batman", Type: string },
...
],
// Row 2
[
{ ColumnName: "id", Value: 2, Type: int },
{ ColumnName: "name", Value: "superman", Type: string },
...
]
]
有没有办法在 golang 中使用包 database/sql 获取列的类型?
我怀疑我想要做的是
- 制作一个接口数组{} Column() 的大小,
- 然后为每一列确定它的类型,
- 然后用指向该类型的指针填充数组,
- 然后将数组传递给 Scan()
这有点像sqlx 中的这个代码示例,但首先不知道数据将填充的结构。
【问题讨论】:
-
这可以通过扫描到一个空界面然后在字段上进行类型切换来实现。查看blog.golang.org/json-and-go(特定于JSON,但请查看“解码任意数据”部分)和golang.org/ref/spec#Type_switches。另请查看 golang.org/pkg/database/sql/#Scanner 了解支持的类型。
-
如果答案是好的请接受 thx
标签: sql reflection go