在旅途中,你调用一个数据库打开与golang数据库开放功能歧义
DB, err = sql.Open("sqlite3", "./bar.db")
这将返回*sql.DB
类型的数据库,功能和类型的database/sql
成员。
但是,在sqlite3驱动程序包中,有另一个Open
函数,它返回*sqlite3.Conn
类型。
我注意到sqlite3
驱动程序包中定义的一些函数在使用默认的database/sql
打开的数据库上不起作用。
此外,还有在sqlite3的包是类似于database/sql
的功能,即Query
和Exec
,其返回不同类型的功能。
database/sql
包含函数Query
,返回类型*sql.Rows
。
mxk/sqlite/sqlite3
和mattn/go-sqlite3
都有一个Query
函数,它返回完全不同的类型。
我想在我的数据库连接上运行诸如mxk/sqlite/sqlite3
的BusyTimeout
等功能,但它不是正确的类型。我是否必须重写所有代码才能使用sqlite3驱动程序打开数据库连接,而不是使用database/sql
的Open
?如果您不能在该通用连接中使用任何驱动程序的功能,database/sql
的Open
函数的优点是什么?