最近在做注册登录服务时,学习用Go语言操作MySQL数据库实现用户数据的增删改查,现将个人学习心得总结如下,另外附有代码仓库地址,欢迎各位有兴趣的fork。
软件环境:Goland、Navicat for MySQL。
一、实现思路
1,我的总体设计思路是先写出连接数据库和关闭数据库的逻辑,再建立四个分支,根据用户的选择分别进入增删改查的操作;
1
2
3
4
5
|
func
DBstart() {
db,_= sql.Open(
"mysql"
,
"root:123456@tcp(127.0.0.1:3306)/dbtest?charset=utf8"
)
//dbtest为我新建立的数据库名
fmt.Println(
"mysql start succcessed !"
)
}
|
1
2
3
4
5
|
func
DBclose(){
//关闭数据库
db.Close()
fmt.Println(
"database closed"
)
}
|
2,增加的操作
输入对应的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
fmt.Println(
"请输入用户ID:"
)
fmt.Scan(&Userid)
fmt.Println(
"请输入名字:"
)
fmt.Scan(&Username)
fmt.Println(
"请输入部门:"
)
fmt.Scan(&Departname)
fmt.Println(
"请输入进部门时间"
)
fmt.Scan(&Created)
//插入数据
stmt,err := db.Prepare(
"INSERT userif SET userid=?,username=?,departname=?,created=?"
)
CheckErr(err)
res,err := stmt.Exec(Userid,Username,Departname,Created)
CheckErr(err)
id,err := res.LastInsertId()
fmt.Println(id)
|
3,查询的操作
1
2
3
4
5
6
7
8
9
10
11
|
rows,err := db.Query(
"SELECT * FROM userif"
)
CheckErr(err)
for
rows.Next(){
err = rows.Scan(&Id,&Userid,&Created,&Departname,&Username)
CheckErr(err)
fmt.Println(Userid)
fmt.Println(Username)
fmt.Println(Departname)
fmt.Println(Created)
}
|
4,更新的操作
根据提示输入要更新的内容,然后转到对应的更新语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
fmt.Println(
"请输入要查询的用户ID:"
)
fmt.Scan(&Userid)
fmt.Println(
"请输入要更新的内容:a-名字;b-部门;c-进部门的时间:"
)
var
s string
fmt.Scan(&s)
switch
s {
case
"a"
:
fmt.Println(
"请输入要更改用户ID为%d的名字"
,Userid)
fmt.Scan(&Username)
fmt.Println(Username)
fmt.Println(Userid)
stmt,err := db.Prepare(
"UPDATE userif SET username=? where userid=?"
)
CheckErr(err)
......
//以此类推
}
|
5,删除的操作
1
2
3
4
5
6
7
8
9
10
11
12
|
fmt.Println(
"请输入要删除的用户ID:"
)
fmt.Scan(&Userid)
stmt,err := db.Prepare(
"DELETE from userif where userid=?"
)
CheckErr(err)
res,err := stmt.Exec(Userid)
CheckErr(err)
affect,err := res.RowsAffected()
CheckErr(err)
fmt.Println(affect)
|
二、注意点
1,在查找操作中注意输入与输出对应的列名是否与MySQL数据中的一致,不然可能会造成如下错误
三、参考资料