为了账号安全,请及时绑定邮箱和手机立即绑定

我想做一个从某些列中获取数据的函数

我想做一个从某些列中获取数据的函数

Go
泛舟湖上清波郎朗 2022-06-27 10:04:57
我已经创建了代码,但它没有完成。有人可以帮我完成代码吗?或者完整代码的样子。我使用的语言是 Go,数据库是 PostgreSQLfunc (m *rg) GetAllRegional(filter map[string]interface{}) ([]*model.Regional, int64, error) {    query := `SELECT        title,        language,        isviewmain        FROM Regional`    stmt, err := m.DB.Prepare(query)    if err != nil {        log.Println(err)        return nil, err    }    return nil, -1, nil}
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

这是指向先前答案的链接: (GoLANG) *sql.DB Scan rows into string array pointer


编辑:这是一个与您的示例更相似的示例。


这适用于 mariaDB 顺便说一句,请确保更改连接字符串并更改sql.Open为 postgreSQL



type rg struct {

    DB *sql.DB

}


func init() {

    // fill it with your info

    db, err := connect("testDB" /* DB */, "testUser" /* DbUser */, "testPass" /* DbPw */)

    if err != nil {

        log.Fatal(err)

    }


    filter := map[string]interface{}{}

    r, i, err := db.GetAllRegional(filter)

    if err != nil {

        log.Fatal(err)

    }


    log.Printf("r: %+v\ni: %+v\n", r, i)

}


// connect returns a rg

func connect(dbName, username, password string) (rg, error) {

    cs := username + ":" + password + "@tcp(" + "YourDbHost" + ":3306)/" + dbName


    db, err := sql.Open("mysql", cs)

    if err != nil {

        log.Println(err.Error())

        return rg{}, err

    }

    return rg{db}, nil

}


// GetAllRegional ...

func (m *rg) GetAllRegional(filter map[string]interface{}) ([]string, int64, error) {

    // checking if the connection is alive

    err := m.DB.Ping()

    if err != nil {

        log.Fatal(err)

        return nil, 0, err

    }


    q := `SELECT title, language, isviewmain FROM Regional`

    rows, err := m.DB.Query(q)

    if err != nil {

        log.Fatal(err)

        return nil, 0, err

    }

    defer rows.Close()


    // Not sure what you're returning on the model

    // returning a slice instead

    var regional []string

    for rows.Next() {

        var temp string


        err = rows.Scan(&temp)

        if err != nil {

            log.Println(err.Error())

            if err == sql.ErrNoRows {

                log.Println(sql.ErrNoRows.Error())

            }

            return nil, 0, err

        }


        regional = append(regional, temp)

    }


    return regional, 1, nil

}


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号