/
Operation.go
135 lines (114 loc) · 2.81 KB
/
Operation.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package DataBaseOperation
import (
"database/sql"
"fmt"
"log"
//仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数
"os"
"time"
_ "github.com/go-sql-driver/mysql"
)
//user@unix(/path/to/socket)/dbname?charset=utf8
//user:password@tcp(localhost:5555)/dbname?charset=utf8
//user:password@/dbname
//user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname
func MysqlExample() {
db, err := sql.Open("mysql", "root:0000@/account?charset=utf8mb4")
if err != nil {
log.Fatal(err)
panic(err)
}
stmt, err := db.Prepare("INSERT userinfo set username=?,department=?,created=?")
if err != nil {
log.Fatal(err)
panic(err)
}
res, err := stmt.Exec("one", "one-dept", "2018.6.26")
res, err = stmt.Exec("two", "one-dept", "2018.6.26")
res, err = stmt.Exec("three", "one-dept", "2018.6.26")
if err != nil {
log.Fatal(err)
panic(err)
}
id, err := res.LastInsertId()
if err != nil {
log.Fatal(err)
panic(err)
}
fmt.Println(id)
stmt, err = db.Prepare("UPDATE userinfo set username=? WHERE uid=?")
checkErr(err)
res, err = stmt.Exec("666", id)
checkErr(err)
affect, err := res.RowsAffected()
checkErr(err)
fmt.Println(affect)
rows, err := db.Query("SELECT * from userinfo")
for rows.Next() {
var uid int
var username string
var department string
var created string
err = rows.Scan(&uid, &username, &department, &created)
checkErr(err)
fmt.Println(uid)
fmt.Println(username)
fmt.Println(department)
fmt.Println(created)
}
stmt, err = db.Prepare("DELETE from userinfo")
checkErr(err)
res, err = stmt.Exec()
checkErr(err)
db.Close()
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
func Sqllite3Example() {
fmt.Println(os.Getwd())
db, err := sql.Open("sqlite3", "./foo.db")
checkErr(err)
//插入数据
stmt, err := db.Prepare("INSERT INTO userinfo(username, department, created) values(?,?,?)")
checkErr(err)
res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09")
checkErr(err)
id, err := res.LastInsertId()
checkErr(err)
fmt.Println(id)
//更新数据
stmt, err = db.Prepare("update userinfo set username=? where uid=?")
checkErr(err)
res, err = stmt.Exec("astaxieupdate", id)
checkErr(err)
affect, err := res.RowsAffected()
checkErr(err)
fmt.Println(affect)
//查询数据
rows, err := db.Query("SELECT * FROM userinfo")
checkErr(err)
for rows.Next() {
var uid int
var username string
var department string
var created time.Time
err = rows.Scan(&uid, &username, &department, &created)
checkErr(err)
fmt.Println(uid)
fmt.Println(username)
fmt.Println(department)
fmt.Println(created)
}
//删除数据
stmt, err = db.Prepare("delete from userinfo where uid=?")
checkErr(err)
res, err = stmt.Exec(id)
checkErr(err)
affect, err = res.RowsAffected()
checkErr(err)
fmt.Println(affect)
db.Close()
}