From 362ccaec260147659af588e6d3ac26139025adc1 Mon Sep 17 00:00:00 2001 From: asahi Date: Wed, 18 Jun 2025 13:34:31 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=85=E8=AF=BBgolang=20sqlx=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Golang/go-sqlx.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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。 +