github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/mattn/go-sqlite3/_example/simple/simple.go (about)

     1  package main
     2  
     3  import (
     4  	"database/sql"
     5  	"fmt"
     6  	_ "github.com/insionng/yougam/libraries/mattn/go-sqlite3"
     7  	"log"
     8  	"os"
     9  )
    10  
    11  func main() {
    12  	os.Remove("./foo.db")
    13  
    14  	db, err := sql.Open("sqlite3", "./foo.db")
    15  	if err != nil {
    16  		log.Fatal(err)
    17  	}
    18  	defer db.Close()
    19  
    20  	sqlStmt := `
    21  	create table foo (id integer not null primary key, name text);
    22  	delete from foo;
    23  	`
    24  	_, err = db.Exec(sqlStmt)
    25  	if err != nil {
    26  		log.Printf("%q: %s\n", err, sqlStmt)
    27  		return
    28  	}
    29  
    30  	tx, err := db.Begin()
    31  	if err != nil {
    32  		log.Fatal(err)
    33  	}
    34  	stmt, err := tx.Prepare("insert into foo(id, name) values(?, ?)")
    35  	if err != nil {
    36  		log.Fatal(err)
    37  	}
    38  	defer stmt.Close()
    39  	for i := 0; i < 100; i++ {
    40  		_, err = stmt.Exec(i, fmt.Sprintf("こんにちわ世界%03d", i))
    41  		if err != nil {
    42  			log.Fatal(err)
    43  		}
    44  	}
    45  	tx.Commit()
    46  
    47  	rows, err := db.Query("select id, name from foo")
    48  	if err != nil {
    49  		log.Fatal(err)
    50  	}
    51  	defer rows.Close()
    52  	for rows.Next() {
    53  		var id int
    54  		var name string
    55  		rows.Scan(&id, &name)
    56  		fmt.Println(id, name)
    57  	}
    58  
    59  	stmt, err = db.Prepare("select name from foo where id = ?")
    60  	if err != nil {
    61  		log.Fatal(err)
    62  	}
    63  	defer stmt.Close()
    64  	var name string
    65  	err = stmt.QueryRow("3").Scan(&name)
    66  	if err != nil {
    67  		log.Fatal(err)
    68  	}
    69  	fmt.Println(name)
    70  
    71  	_, err = db.Exec("delete from foo")
    72  	if err != nil {
    73  		log.Fatal(err)
    74  	}
    75  
    76  	_, err = db.Exec("insert into foo(id, name) values(1, 'foo'), (2, 'bar'), (3, 'baz')")
    77  	if err != nil {
    78  		log.Fatal(err)
    79  	}
    80  
    81  	rows, err = db.Query("select id, name from foo")
    82  	if err != nil {
    83  		log.Fatal(err)
    84  	}
    85  	defer rows.Close()
    86  	for rows.Next() {
    87  		var id int
    88  		var name string
    89  		rows.Scan(&id, &name)
    90  		fmt.Println(id, name)
    91  	}
    92  }