登录
首页 >  Golang >  Go问答

我想编写一个函数以从特定列中提取数据

来源:stackoverflow

时间:2024-03-10 22:54:22 338浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《我想编写一个函数以从特定列中提取数据》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我已经创建了代码,但尚未完成。有人可以帮助我完成代码吗?或者完整的代码是什么样的。我使用的语言是 go,数据库是 postgresql

func (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
}

解决方案


这是之前答案的链接: (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
}


今天关于《我想编写一个函数以从特定列中提取数据》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>