select查询一条数据 多个字段 的封装函数解决求助

hellsam · 2017-11-09 14:45:19 · 1060 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-11-09 14:45:19 的主题,其中的信息可能已经有所发展或是发生改变。

查询一条数据 多个字段 , 将在不知道几个字段的情况下封装个函数 查询 返回数组格式 报错了。 不知道如何解决 研究一下午了,没解决 希望高手帮我改改 谢谢了!

func DualValueTest(singleSql string) []string {
    var array []string
    var result string
    rows, err := DB.Query(singleSql)
    if err != nil {
        panic(err)
    }
    defer rows.Close()
    i := 0
    for rows.Next() {
        err = rows.Scan(&result)
        array[i] = result
        if err != nil {
            fmt.Println("多字段查询报错信息:", err.Error())
            //panic(err)
        }
        i++
        //Map1 = append(Map1, result)
    }
    return array
}


然后调用上面函数 获取值方法
array2 := mysql.DualValueTest("select email,tel,logintime from user_list where uid =20")
    fmt.Fprintln(w, array2[0])
    fmt.Fprintln(w, array2[1])
    fmt.Fprintln(w, array2[2])

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

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

1060 次点击  
加入收藏 微博
5 回复  |  直到 2017-11-10 05:51:22
hellsam
hellsam · #1 · 7年之前

求助

channel
channel · #2 · 7年之前

这样肯定不行,Scan 必须知道字段数量

hellsam
hellsam · #3 · 7年之前

@channel 求助怎么解决加入数组在返回数组呢

hellsam
hellsam · #4 · 7年之前

自己解决了

yudeguang
yudeguang · #5 · 7年之前

https://github.com/yudeguang/mysql

type MySqlStruct struct { DB *sql.DB }

func (m *MySqlStruct) Query(query string, args ...interface{}) ([][]string, error) { stmt, err := m.DB.Prepare(query) if err != nil { return nil, err } defer stmt.Close() rows, err := stmt.Query(args...) if err != nil { return nil, err } defer rows.Close() //获取列数量 columns, err := rows.Columns() if err != nil { return nil, err } lenColumns := len(columns) var result [][]string for rows.Next() { oneColumn := make([]string, lenColumns) oneColumnHasNULL := make([]sql.RawBytes, lenColumns) oneColumnPtr := make([]interface{}, lenColumns) for i := 0; i < lenColumns; i++ { oneColumnPtr[i] = &oneColumnHasNULL[i] } err = rows.Scan(oneColumnPtr...) if err != nil { return nil, err } //处理NULL值 for i, v := range oneColumnHasNULL { if v == nil { oneColumn[i] = "NULL" } else { oneColumn[i] = string(oneColumnHasNULL[i]) } } result = append(result, oneColumn) } return result, nil }

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传