aboutsummaryrefslogtreecommitdiff
path: root/src/database
diff options
context:
space:
mode:
authorHasan Ozgan <hasan@ozgan.net>2019-02-07 23:22:54 +0000
committerDaniel Theophanes <kardianos@gmail.com>2019-03-25 15:51:17 +0000
commit42cdc26665a6aeccb6c8fd9c0620961c7b434862 (patch)
tree4b4aa087f6d7ec32ef9802df6f206361426cacd1 /src/database
parentcf99535e218c542d01f252492789ff88acc4bfb9 (diff)
downloadgo-42cdc26665a6aeccb6c8fd9c0620961c7b434862.tar.gz
go-42cdc26665a6aeccb6c8fd9c0620961c7b434862.zip
database/sql: add example for DB.Prepare and Tx.Prepare
Change-Id: Ib9272a7713ed7aaf8ad54c4827be8c095763e648 Reviewed-on: https://go-review.googlesource.com/c/go/+/161677 Reviewed-by: Daniel Theophanes <kardianos@gmail.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/database')
-rw-r--r--src/database/sql/example_test.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/database/sql/example_test.go b/src/database/sql/example_test.go
index 6f9bd91276..2bf2a9fccf 100644
--- a/src/database/sql/example_test.go
+++ b/src/database/sql/example_test.go
@@ -163,6 +163,63 @@ func ExampleDB_PingContext() {
log.Println(status)
}
+func ExampleDB_Prepare() {
+ projects := []struct {
+ mascot string
+ release int
+ }{
+ {"tux", 1991},
+ {"duke", 1996},
+ {"gopher", 2009},
+ {"moby dock", 2013},
+ }
+
+ stmt, err := db.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)
+ }
+ }
+}
+
+func ExampleTx_Prepare() {
+ 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)
+ }
+}
+
func ExampleConn_BeginTx() {
tx, err := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelSerializable})
if err != nil {