· 7 years ago · Dec 15, 2018, 04:18 PM
1package main
2
3import (
4 "database/sql"
5 "fmt"
6 "log"
7
8 _ "github.com/mattn/go-sqlite3"
9)
10
11var DbConnection *sql.DB
12
13type Person struct {
14 Name string
15 Age int
16}
17
18func main() {
19 DbConnection, _ := sql.Open("sqlite3", "./example.sql")
20 cmd := `CREATE TABLE IF NOT EXISTS person(
21 name STRING,
22 age INT)`
23
24 _, err := DbConnection.Exec(cmd)
25 if err != nil {
26 log.Fatal(err)
27 }
28
29 //cmd = "INSERT INTO person (name, age) VALUES (?, ?)"
30 //_, err = DbConnection.Exec(cmd, "Nancy", 20)
31 //if err != nil {
32 // log.Fatal(err)
33 //}
34
35 //cmd = "UPDATE person SET age = ? WHERE name = ?"
36 //_, err = DbConnection.Exec(cmd, 25, "Mike")
37 //if err != nil {
38 // log.Fatal(err)
39 //}
40
41 //cmd = "SELECT * FROM person"
42 //rows, _ := DbConnection.Query(cmd)
43 //defer rows.Close()
44 //// パターンã¨ã—ã¦è¦šãˆã¦ãŠã。
45 //var pp []Person
46 //for rows.Next() {
47 // var p Person
48 // err := rows.Scan(&p.Name, &p.Age)
49 // if err != nil {
50 // log.Println(err)
51 // }
52 // pp = append(pp ,p)
53 //}
54 //err = rows.Err()
55 //if err != nil {
56 // log.Fatal(err)
57 //}
58 //for _, p := range pp {
59 // fmt.Println(p.Name, p.Age)
60 //}
61
62 //cmd = "SELECT * FROM person where age = ?"
63 //row := DbConnection.QueryRow(cmd, 1000)
64 //var p Person
65 //err = row.Scan(&p.Name, p.Age)
66 //if err != nil {
67 // if err == sql.ErrNoRows{
68 // log.Println("No row")
69 // }else {
70 // log.Println(err)
71 // }
72 //}
73 //fmt.Println(p.Name, p.Age)
74
75 //cmd = "DELETE FROM person WHERE name = ?"
76 //_, err = DbConnection.Exec(cmd, "Nancy")
77 //if err != nil {
78 // log.Fatal(err)
79 //}
80
81 tableName := "person"
82 cmd = fmt.Sprintf("SELECT * FROM %s", tableName)
83 rows, _ := DbConnection.Query(cmd)
84 defer rows.Close()
85 var pp []Person
86 for rows.Next() {
87 var p Person
88 err := rows.Scan(&p.Name, &p.Age)
89 if err != nil {
90 log.Println(err)
91 }
92 pp = append(pp, p)
93 }
94 err = rows.Err()
95 if err != nil {
96 log.Fatal(err)
97 }
98 for _, p := range pp {
99 fmt.Println(p.Name, p.Age)
100 }
101}