首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一种方法可以使用golang中的/sql获取列的Type?

是否有一种方法可以使用golang中的/sql获取列的Type?
EN

Stack Overflow用户
提问于 2013-07-25 16:00:35
回答 2查看 5.3K关注 0票数 4

基本上,在不知道查询的结果可能是什么的情况下,我想查询数据库,并返回这样的结构(json-y)。

代码语言:javascript
复制
// 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中的/sql获取列的Type?

我怀疑我想做的是

  1. 使接口{}的数组与列()的大小相同,
  2. 然后对每一列确定它的类型,
  3. 然后用指向该类型的指针填充数组,
  4. 然后传递数组来扫描()

这有点像[医]平方中的代码示例,但不知道数据将被填充的结构。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-24 05:20:44

你应该可以这样做:

代码语言:javascript
复制
func printRows(rows *sql.Rows){

    colTypes, err := rows.ColumnTypes()
    for _,s := range colTypes {
      log.Println("cols type:", s.DatabaseTypeName());
    }
}
票数 5
EN

Stack Overflow用户

发布于 2014-06-03 14:50:19

使用数据库/sql?没有(据我所知)。

但是您可以使用这段代码进行任意查询。来自json包的json.Marshall()将使用反射来确定打印值的正确方式,因此您可以拥有如下结构:

代码语言:javascript
复制
type Column struct {
    ColumnName  string
    ColumnValue interface{}
    ColumnType  string
}

然后使用reflect.TypeOf(someVariable).String()获取ColumnType的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17863113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档