]> Cypherpunks repositories - gostls13.git/commitdiff
database/sql: add example for DB.Prepare and Tx.Prepare
authorHasan Ozgan <hasan@ozgan.net>
Thu, 7 Feb 2019 23:22:54 +0000 (23:22 +0000)
committerDaniel Theophanes <kardianos@gmail.com>
Mon, 25 Mar 2019 15:51:17 +0000 (15:51 +0000)
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>

src/database/sql/example_test.go

index 6f9bd91276edfcf519194f9396163e13a2816d76..2bf2a9fccf2594d271e0e128fbd4e73ee332577a 100644 (file)
@@ -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 {