登录
首页 >  Golang >  Go问答

区分sqlx.Connect() 和 sqlx.Open()

来源:stackoverflow

时间:2024-03-11 23:54:28 479浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《区分sqlx.Connect() 和 sqlx.Open()》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我正在为我的 golang 项目使用 jmoiron sqlx 库。我试图创建一个数据库连接mysql。于是,我找到了这两个函数:sqlx.connect()sqlx.open(),但是没有发现区别。

所以,我尝试阅读godoc中的文档。我发现了这个:

sqlx.connect()

connect to a database and verify with a ping.

sqlx.open()

open is the same as sql.open, but returns an *sqlx.db instead.

我知道 sqlx.open() 使用 golang sql.open 创建与数据库的连接。但是sqlx.connect()有什么用呢?

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

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 ?如果是这样,为什么会 ping 通?是什么让它与众不同?

谢谢


解决方案


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

基本上,您可以立即在一种方法中看到数据库连接不存在,而不用再次自己编写该代码。

以上就是《区分sqlx.Connect() 和 sqlx.Open()》的详细内容,更多关于的资料请关注golang学习网公众号!

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