最近在做註冊登錄服務時,學慣用Go語言操作MySQL資料庫實現用戶數據的增刪改查,現將個人學習心得總結如下,另外附有代碼倉庫地址,歡迎各位有興趣的fork。 軟體環境:Goland、Navicat for MySQL。 一、實現思路 1,我的總體設計思路是先寫出連接資料庫和關閉資料庫的邏輯,再建立四 ...
最近在做註冊登錄服務時,學慣用Go語言操作MySQL資料庫實現用戶數據的增刪改查,現將個人學習心得總結如下,另外附有代碼倉庫地址,歡迎各位有興趣的fork。
軟體環境:Goland、Navicat for MySQL。
一、實現思路
1,我的總體設計思路是先寫出連接資料庫和關閉資料庫的邏輯,再建立四個分支,根據用戶的選擇分別進入增刪改查的操作;
func DBstart() { db,_= sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/dbtest?charset=utf8") //dbtest為我新建立的資料庫名 fmt.Println("mysql start succcessed !") }
func DBclose(){ //關閉資料庫 db.Close() fmt.Println("database closed") }
2,增加的操作
輸入對應的數據
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,查詢的操作
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,更新的操作
根據提示輸入要更新的內容,然後轉到對應的更新語句
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,刪除的操作
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數據中的一致,不然可能會造成如下錯誤
三、參考資料