有没有办法在golang中使用包database/sql获取列的类型?

基本上,事先不知道查询的结果结构可能是什么,我想查询数据库,并返回这样的结构(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获取列的类型?

我怀疑我想做的是

  1. 使接口数组与 Column() 的大小相同,

  2. 然后为每一列确定它的类型,

  3. 然后用指向该类型的指针填充数组,

  4. 然后将数组传递给 Scan()

这有点像sqlx 中的这个代码示例,但首先不知道数据将填充的结构。


婷婷同学_
浏览 411回答 2
2回答

千万里不及你

你应该可以这样做:func printRows(rows *sql.Rows){    colTypes, err := rows.ColumnTypes()    for _,s := range colTypes {      log.Println("cols type:", s.DatabaseTypeName());    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go