首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlx.Connect()和sqlx.Open()之间有什么区别?

sqlx.Connect()和sqlx.Open()之间有什么区别?
EN

Stack Overflow用户
提问于 2018-09-13 17:14:11
回答 1查看 3.2K关注 0票数 4

我正在使用jmoiron sqlx库作为我的高丽项目。我试图创建一个db连接mysql。因此,我发现了这两个函数:sqlx.Connect()sqlx.Open(),但没有发现区别。

因此,我试着阅读戈多中的文档。我发现了这个:

sqlx.Connect()

代码语言:javascript
复制
Connect to a database and verify with a ping.

sqlx.Open()

代码语言:javascript
复制
Open is the same as sql.Open, but returns an *sqlx.DB instead.

我知道sqlx.Open()使用golang sql.Open创建到数据库的连接。但是sqlx.Connect()的用途是什么呢?

如果我在这里看到源代码:

代码语言:javascript
复制
func Connect(driverName, dataSourceName string) (*DB, error) {
    db, err := Open(driverName, dataSourceName)
    if err != nil {
        return nil, err
    }
    err = db.Ping()
    if err != nil {
        db.Close()
        return nil, err
    }
    return db, nil
}

我可以看到它调用相同的sqlx.Open(),然后调用db.Ping()。所以唯一的区别是sqlx.Open()在创建连接之后执行ping?如果是的话,它为什么要这样做呢?是什么让它与众不同?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-13 17:31:38

Connect将使用open和ping检查有效连接,然后可以处理错误。

基本上,您可以立即看到db连接不在一种方法中,而不是自己编写代码。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52318684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档