4

我正在为我的 golang 项目使用jmoiron sqlx库。我试图创建一个数据库连接mysql。所以,我找到了这两个函数:sqlx.Connect()and 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?是什么让它与众不同?

谢谢

4

1 回答 1

8

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

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

于 2018-09-13T17:31:38.537 回答