当前位置: 首页>>代码示例>>用法及示例精选>>正文


golang sql Tx.Prepare用法及代码示例

GO语言database/sql包Tx.Prepare函数的用法及代码示例。

用法:

func (tx *Tx) Prepare(query string) (*Stmt, error)

Prepare创建一个准备好的语句以在事务中使用。

返回的语句在事务内运行,并且一旦事务已提交或回滚就不能再使用。

要在此事务上使用现有的准备好的语句,请参见Tx.Stmt。

示例

package main

import (
	"context"
	"database/sql"
	"log"
)

var (
	ctx context.Context
	db  *sql.DB
)

func main() {
	projects := []struct {
		mascot  string
		release int
	}{
		{"tux", 1991},
		{"duke", 1996},
		{"gopher", 2009},
		{"moby dock", 2013},
	}

	tx, err := db.Begin()
	if err != nil {
		log.Fatal(err)
	}
	defer tx.Rollback() // The rollback will be ignored if the tx has been committed later in the function.

	stmt, err := tx.Prepare("INSERT INTO projects(id, mascot, release, category) VALUES( ?, ?, ?, ? )")
	if err != nil {
		log.Fatal(err)
	}
	defer stmt.Close() // Prepared statements take up server resources and should be closed after use.

	for id, project := range projects {
		if _, err := stmt.Exec(id+1, project.mascot, project.release, "open source"); err != nil {
			log.Fatal(err)
		}
	}
	if err := tx.Commit(); err != nil {
		log.Fatal(err)
	}
}

相关用法

注:本文由纯净天空筛选整理自golang.org大神的英文原创作品 golang sql Tx.Prepare。非经特殊声明,原始代码版权归原作者所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。