Golang读取MySQL数据库,数据列动态变化的处理

bkzy-wangjp · · 2265 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

读取数据库的SELECT语句是动态变化的,因此查询出来的列也是变化的。按照网上查找的资料,使用下面的方法进行处理: cols, err := rows.Columns() // Remember to check err afterwards vals := make([]interface{}, len(cols)) for i, _ := range cols { vals[i] = new(sql.RawBytes) } for rows.Next() { err = rows.Scan(vals...) // Now you can check each element of vals for nil-ness, // and you can use type introspection and type assertions // to fetch the column into a typed variable. } 但是err = rows.Scan(vals...)这一句总是执行不了,报错:sql: Scan error on column index 0: destination not a pointer 我用的具体程序是: for rows.Next() { err := rows.Scan(vals...) checkErr(err) for i := range vals { mt.Print(vals[i], " ") } fmt.Print("\n") } 但是使用下面的却可以执行: for rows.Next() { err := rows.Scan(&vals[0], &vals[1], &vals[2], &vals[3]) checkErr(err) for i := range vals { mt.Print(vals[i], " ") } fmt.Print("\n") } 但是打印出来的结果是ASCII码,如下: [53 57 51 53 52 57 57 55 54] [50 48 49 56 45 49 50 45 50 50 32 49 54 58 51 57 58 48 50] [54 54 48 89 76 46 80 86] [48 46 48 53 50 53 57 50 49 57 57 50 57 53 55 53 57 50] [53 57 51 53 53 48 49 54 57] [50 48 49 56 45 49 50 45 50 50 32 49 54 58 51 57 58 48 52] [54 54 48 89 76 46 80 86] [48 46 48 53 51 51 50 53 53 52 49 51 49 55 52 54 50 57 50] [53 57 51 53 53 48 51 51 51] [50 48 49 56 45 49 50 45 50 50 32 49 54 58 51 57 58 48 54] [54 54 48 89 76 46 80 86] [48 46 48 53 51 56 56 52 53 56 52 52 53 54 54 56 50 50 48 53] 有没有大神处理过此类问题?

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2265 次点击  
加入收藏 微博
6 回复  |  直到 2018-12-26 09:37:27
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传