· 10 years ago · Feb 24, 2016, 12:54 PM
1package main
2
3import (
4 "database/sql"
5 "log"
6 "math"
7
8 _ "github.com/lib/pq"
9)
10
11func main() {
12 db, err := sql.Open("postgres", "dbname=postgres host=localhost port=5432 user=postgres password=postgres")
13 if err != nil {
14 log.Printf("open: %v", err)
15 }
16 if err = db.Ping(); err != nil {
17 log.Printf("open ping: %v", err)
18 }
19 defer db.Close()
20
21 sqlInit := `CREATE TABLE IF NOT EXISTS test (id bigserial)`
22 if _, err = db.Exec(sqlInit); err != nil {
23 log.Printf("init: %v", err)
24 }
25
26 sqlDelete := `DELETE FROM test`
27 if _, err = db.Exec(sqlDelete); err != nil {
28 log.Printf("delete: %v", err)
29 }
30
31 nums := []int{
32 1,
33 math.MaxInt64,
34 math.MinInt64,
35 }
36
37 sqlInsert := `INSERT INTO test (id) VALUES ($1)`
38 for i, n := range nums {
39 if _, err = db.Exec(sqlInsert, n); err != nil {
40 log.Printf("num #%d: %v", i, err)
41 }
42 }
43
44 gotNums := make([]int, len(nums))
45 sqlSelect := `SELECT * FROM test`
46 rows, err := db.Query(sqlSelect)
47 if err != nil {
48 log.Printf("select: %v", err)
49 }
50 defer rows.Close()
51
52 i := 0
53 for rows.Next() {
54 if err = rows.Scan(&gotNums[i]); err != nil {
55 log.Printf("scan #%d: %v", i, err)
56 }
57 i++
58 }
59
60 log.Printf("nums: %v", nums)
61 log.Printf(" got: %v", gotNums)
62}