golang数据库开放函数歧义



在go中,您可以调用使用打开的数据库

DB, err = sql.Open("sqlite3", "./bar.db")

这返回一个类型为*sql.DB的数据库,函数和类型都是database/sql的成员。

但是,在sqlite3驱动程序包中,还有另一个返回*sqlite3.Conn类型的Open函数。

我注意到sqlite3驱动程序包中定义的一些函数在使用默认database/sql打开的数据库上不起作用。

此外,sqlite3包中还有一些函数与database/sql的函数类似,即QueryExec,它们返回不同的类型。

database/sql包含一个返回类型*sql.Rows的函数Query

mxk/sqlite/sqlite3mattn/go-sqlite3都有一个Query函数,返回的类型完全不同。

我想在数据库连接上运行mxk/sqlite/sqlite3BusyTimeout之类的函数,但它不是正确的类型。我是否必须重写所有代码才能使用sqlite3驱动程序打开数据库连接,而不是使用database/sqlOpen?如果database/sqlOpen函数不能与通用连接一起使用驱动程序的任何函数,那么它的优势是什么?

好吧,正如文档所说。。。

数据库连接可以直接使用此包创建,也可以使用"sqlite3"数据库/sql驱动程序创建。下面描述的直接接口公开了SQLite特定的功能,例如增量I/O和在线备份。当应用程序必须支持多个数据库引擎时,建议使用该驱动程序。

当您想要特定于sqlite的函数(您的用例)时,您将使用sqlite3连接,而对于通用数据库连接,则将使用数据库驱动程序(您的代码)。

这完全符合逻辑,因为通用驱动程序将如何处理特定于各种数据库的功能?运行时错误?

因此,您可以选择:所有sqlite函数->sqlite conn或处理多个sql数据库->通用驱动程序。

相关内容

  • 没有找到相关文章

最新更新