...
Run Format

Source file src/database/sql/example_test.go

Documentation: database/sql

  // Copyright 2013 The Go Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style
  // license that can be found in the LICENSE file.
  
  package sql_test
  
  import (
  	"database/sql"
  	"fmt"
  	"log"
  )
  
  var db *sql.DB
  
  func ExampleDB_Query() {
  	age := 27
  	rows, err := db.Query("SELECT name FROM users WHERE age=?", age)
  	if err != nil {
  		log.Fatal(err)
  	}
  	defer rows.Close()
  	for rows.Next() {
  		var name string
  		if err := rows.Scan(&name); err != nil {
  			log.Fatal(err)
  		}
  		fmt.Printf("%s is %d\n", name, age)
  	}
  	if err := rows.Err(); err != nil {
  		log.Fatal(err)
  	}
  }
  
  func ExampleDB_QueryRow() {
  	id := 123
  	var username string
  	err := db.QueryRow("SELECT username FROM users WHERE id=?", id).Scan(&username)
  	switch {
  	case err == sql.ErrNoRows:
  		log.Printf("No user with that ID.")
  	case err != nil:
  		log.Fatal(err)
  	default:
  		fmt.Printf("Username is %s\n", username)
  	}
  }
  
  func ExampleDB_Query_multipleResultSets() {
  	age := 27
  	q := `
  create temp table uid (id bigint); -- Create temp table for queries.
  insert into uid
  select id from users where age < ?; -- Populate temp table.
  
  -- First result set.
  select
  	users.id, name
  from
  	users
  	join uid on users.id = uid.id
  ;
  
  -- Second result set.
  select 
  	ur.user, ur.role
  from
  	user_roles as ur
  	join uid on uid.id = ur.user
  ;
  	`
  	rows, err := db.Query(q, age)
  	if err != nil {
  		log.Fatal(err)
  	}
  	defer rows.Close()
  
  	for rows.Next() {
  		var (
  			id   int64
  			name string
  		)
  		if err := rows.Scan(&id, &name); err != nil {
  			log.Fatal(err)
  		}
  		fmt.Printf("id %d name is %s\n", id, name)
  	}
  	if !rows.NextResultSet() {
  		log.Fatal("expected more result sets", rows.Err())
  	}
  	var roleMap = map[int64]string{
  		1: "user",
  		2: "admin",
  		3: "gopher",
  	}
  	for rows.Next() {
  		var (
  			id   int64
  			role int64
  		)
  		if err := rows.Scan(&id, &role); err != nil {
  			log.Fatal(err)
  		}
  		fmt.Printf("id %d has role %s\n", id, roleMap[role])
  	}
  	if err := rows.Err(); err != nil {
  		log.Fatal(err)
  	}
  }
  

View as plain text