首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang 访问 db 异常案例

golang 访问 db 异常案例

作者头像
用户1278550
发布2022-01-27 14:36:59
4590
发布2022-01-27 14:36:59
举报
文章被收录于专栏:idbaidba

使用golang 访问数据库遇到的异常 ,专家绕行

在测试多个编程语音访问数据库的脚本。使用golang 查询数据后,获取内容出错问题

panic: sql: expected 2 destination arguments in Scan, not 1

select 函数如下:

func sqlSelect() {
    //
    rows, err := db.Query("SELECT * FROM test1")
    checkErr(err)

    for rows.Next() {
        var a int
        err = rows.Scan(&a)
        checkErr(err)
        fmt.Println("a = ",a)
    }
}

实际上 go_tab 里面有两个字段 ,查询函数封装的时候只是展示其中一个,select * 会产生2列数据。

解决方式一

    for rows.Next() {
        var a int
      var b int
        err = rows.Scan(&a,&b)
        if err != nil {
        log.Fatalln(err)
      }
        fmt.Println("a = ", a,"b = ", b )
    }

解决方式二

如果字段比较多,有不想硬编码,可以使用下面的方式

func sqlSelect() {
    rows, err := db.Query("select * from poc_tab")
    if err != nil {
        log.Fatalln(err)
    }
      // 获取字段
    cols, _ := rows.Columns()
    for i := range cols {
        fmt.Print(cols[i])
        fmt.Print("\t")
    }

    fmt.Println("\n==========================")
    values := make([]sql.RawBytes, len(cols))
    scans := make([]interface{}, len(cols))

    for i := range values {
        scans[i] = &values[i]
    }

    results := make(map[int]map[string]string)
    i := 0
    for rows.Next() {
        if err := rows.Scan(scans...); err != nil {
            fmt.Println("Error")
            return
        }

        row := make(map[string]string)
        for j, v := range values {
            key := cols[j]
            row[key] = string(v)
        }
        results[i] = row
        i++
    }
    for i, m := range results {
        fmt.Println(i)
        for k, v := range m {
            fmt.Println(k, " : ", v)
        }
        fmt.Println("========================")
    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yangyidba 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档