diff --git a/Golang/go-sqlx.md b/Golang/go-sqlx.md index 88effe7..dfc90cc 100644 --- a/Golang/go-sqlx.md +++ b/Golang/go-sqlx.md @@ -267,3 +267,18 @@ err = tx.Commit() 在对Tx对象进行使用时,应当确保调用`commit`或`rollback`中的一个方法,否则连接将会被持有,直至发生垃圾回收。 +在事务的声明周期中,只会关联一个连接,且`在执行其他查询前,row和rows对应的cursor必须被scan或关闭`。 + +## PreparedStatement +可以通过`sqlx.DB.Prepare()`方法来对想要重用的statements进行prepare操作: +```go +stmt, err := db.Prepare(`SELECT * FROM place WHERE telcode=?`) +row = stmt.QueryRow(65) + +tx, err := db.Begin() +txStmt, err := tx.Prepare(`SELECT * FROM place WHERE telcode=?`) +row = txStmt.QueryRow(852) +``` + +prepare操作实际会在数据库运行,故而其需要connection和connection state。 +