1 Star 0 Fork 0

Erdian718/sqlx

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
tx.go 931 Bytes
一键复制 编辑 原始数据 按行查看 历史
Erdian718 提交于 2025-02-20 13:11 +08:00 . Support linq APIs
package sqlx
import (
"context"
"database/sql"
)
// Tx is an in-progress database transaction.
type Tx struct {
raw *sql.Tx
ctx context.Context
}
// Stmt creates a prepared statement for later queries or executions.
func (tx *Tx) Stmt(cmd string) *Stmt {
stmt := &Stmt{ctx: tx.ctx}
stmt.raw, stmt.err = tx.raw.PrepareContext(tx.ctx, cmd)
if stmt.err == nil {
names := regexpParam.FindAllString(cmd, -1)
stmt.nargs = make(map[string]any, len(names))
for _, name := range names {
stmt.nargs[name[1:]] = nil
}
}
return stmt
}
// Rollback aborts the transaction.
func (tx *Tx) Rollback() (err error) {
if tx.raw == nil {
err = sql.ErrTxDone
} else if err = tx.raw.Rollback(); err == nil {
tx.raw = nil
}
return
}
// Commit commits the transaction.
func (tx *Tx) Commit() (err error) {
if tx.raw == nil {
err = sql.ErrTxDone
} else if err = tx.raw.Commit(); err == nil {
tx.raw = nil
}
return
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/erdian718/sqlx.git
git@gitee.com:erdian718/sqlx.git
erdian718
sqlx
sqlx
main

搜索帮助