在使用xorm中,有直接的方法返回map[string]string,返回map[string]interface{}时,返回的不是实际数据类型,下面的代码用于数据同步,可以返回实际的数据类型

func GetQueryColumns(rows *sql.Rows) ([]string, map[string]string, error) {

columnTypes, err := rows.ColumnTypes()

if err != nil {

return nil, nil, err

}

length := len(columnTypes)

columns := make([]string, length)

columnTypeMap := make(map[string]string, length)

for i, ct := range columnTypes {

columns[i] = ct.Name()

columnTypeMap[ct.Name()] = ct.DatabaseTypeName()

}

return columns, columnTypeMap, nil

}

func QueryForInterface(db *sql.DB, sqlInfo string, args ...interface{}) ([]map[string]interface{}, error) {

rows, err := db.Query(sqlInfo, args...)

defer rows.Close()

if err != nil {

return nil, err

}

columns, columnTypeMap, err := GetQueryColumns(rows)

if err != nil {

return nil, err

}

columnLength := len(columns)

cache := make([]interface{}, columnLength)

for index, _ := range cache {

var a interface{}

cache[index] = &a

}

var list []map[string]interface{} //返回的切片

for rows.Next() {

_ = rows.Scan(cache...)

item := make(map[string]interface{})

for i, data := range cache {

if ct, ok := columnTypeMap[columns[i]]; ok {

if (ct == "VARCHAR" || ct == "DATETIME") && *data.(*interface{}) != nil {

item[columns[i]] = string((*data.(*interface{})).([]byte))

} else {

item[columns[i]] = *data.(*interface{})

}

} else {

item[columns[i]] = *data.(*interface{})

}

}

list = append(list, item)

}

return list, nil

}

go mysql 数据 json,golang查询数据返回json相关推荐

  1. django mysql返回json_Django 1.8.11 查询数据库返回JSON格式数据

    Django 1.8.11 查询数据库返回JSON格式数据 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10 Python2.7 Django 1.8.11 返回多 ...

  2. 小汤学编程之MySQL(二)——数据库操作、表结构操作、表数据操作、查询数据和数据类型

    一.数据库操作 1.创建数据库     2.查询数据库     3.修改数据库     4.使用数据库 二.表结构操作 1.创建表     2.查询表     3.修改表     4.删除表 三.表数 ...

  3. php mysql 查询数据出现连接重置_php使用mysql和mysqli连接查询数据

    mysqli: $code = $_POST['code']; $status = ""; $success = ""; $scookies = "& ...

  4. MongoDB的基本操作(创建数据库,数据表,查询数据表信息)

    今天,因为有朋友想要了解MongoDB的基本操作.所以,我就写一篇关于MongoDB的文章,占个坑以后有时间研究MongoDB再正式的写MongoDB的文章.关于MongoDB的安装,可以参考一下我的 ...

  5. php 查询数据库返回json数据

    // 设置返回json格式数据 header('content-type:application/json;charset=utf8'); //连接数据库 $link = mysql_connect( ...

  6. Django 查询数据库返回JSON格式数据

    和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 返回多条数据 示例 import json from django.http import HttpResponse from dj ...

  7. mysql 查询数据 程序_MySQL 查询数据

    MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据. 你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据. 语法 以下为在MyS ...

  8. mysql 随机update_MySQL随机查询数据与随机更新数据

    以下的文章主要讲述的是MySQL随机查询数据.MySQL随机更新数据的实际应用以及对MySQL随机查询数据.MySQL随机更新数据的实际应用代码的描述,以下就是文章的主要内容描述,望你会有所收获. M ...

  9. JavaWeb-----Ajax异步请求 json对象 服务器如何返回json数据 使用ajax完成一个案例

    1. 回顾 1. servlet的生命周期: 2. filter: 过滤放行和拦截一些资源.比如:黑白名单,登录校验,编码设置等.    (1)创建一个类并实现Filter接口以及重写接口的抽象方法 ...

最新文章

  1. (链表)反转链表Reverse List
  2. UOJ#370. 【UR #17】滑稽树上滑稽果 动态规划
  3. SSE,MSE,RMSE,R-square指标讲解
  4. FIR数字滤波器设计——频率抽样法
  5. (二)先看几个面试题
  6. html3d旋转发光立方体,纯css3实现的3D立体动态旋转立方体特效
  7. 喜欢的一些话(不断更新)
  8. 作为一名通信老司机,我是如何看待翼龙通信无人机救灾的?
  9. 如何清理电脑c盘_【电脑】第一期干货:如何正确清理C盘?
  10. PCL1.8.0/ Qt5.7.0开发环境配置
  11. 如何使用Java帮助文档
  12. 小程序二维码海报生成
  13. 【转载】堆排序算法(图解详细流程)
  14. 如何在固定时间自动刷新网页?
  15. VGA驱动实现并下板EGO1
  16. 神圣的QA——写给应届毕业生
  17. 数据可视化 数据可视化看板项目一:(1)模拟实时数据 -使用MYSQL的事件建立动态模拟数据,每秒更新一次 (1)
  18. oh-my-zsh的安装与基本配置
  19. python竞赛试题及答案_python练习题答案
  20. 【05】概率图表示之马尔可夫随机场

热门文章

  1. python 识别验证码
  2. centos 7 五笔安装
  3. Git工作流程最佳实践总结
  4. 【poi xlsx报错】使用POI创建xlsx无法打开
  5. Linux内存释放脚本
  6. 关于.Net 1.1 Windows Forms 控件的一个小问题
  7. 利用DelegatingHandler实现Web Api 的Api key校验
  8. Go 语言范围(Range)
  9. WCF系列(五) -- 也谈序列化(下)
  10. mongodb远程连接配置(亲测)