在旅途中,你調用一個數據庫打開與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
函數的優點是什麼?