这两种方案可以实现相同的功能,那么它们之间有什么区别呢?
参考链接:
https://golang.org/pkg/database/sql/
DB.Query
func (db *DB) Query(query string, args ...interface{}) (*Rows, error)
Query executes a query that returns rows, typically a SELECT. The args are for any placeholder parameters in the query.
根据定义,此函数接受一个查询并返回可迭代的行。
DB.Prepare() + Stmt.Query()
func (db *DB) Prepare(query string) (*Stmt, error)
Prepare creates a prepared statement for later queries or executions. Multiple queries or executions may be run concurrently from the returned statement
func (s *Stmt) Query(args ...interface{}) (*Rows, error)
Query executes a prepared query statement with the given arguments and returns the query results as a *Rows.
由于 DB.prepare 可以接受多个查询,并且 Stmt.Query 可以并发地运行它们,因此可以使用它来实现运行多个并发查询,而不像 DB.Query 只能用于执行单个查询。