golang基础-go对数据库的增删改查操作

前端之家收集整理的这篇文章主要介绍了golang基础-go对数据库的增删改查操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

增加

首先看数据库的结构:

  1. MysqL> desc person; +----------+--------------+------+-----+---------+----------------+
  2. | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+
  3. | user_id | int(255) | NO | PRI | NULL | auto_increment |
  4. | username | varchar(255) | NO | | NULL | |
  5. | sex | varchar(255) | YES | | NULL | |
  6. | email | varchar(255) | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+
  7. 4 rows in set (0.05 sec)
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. _"github.com/go-sql-driver/MysqL"
  6. "github.com/jmoiron/sqlx"
  7. )
  8.  
  9. type Person struct {
  10. UserId int `db:"user_id"`
  11. Username string `db:"username"`
  12. Sex string `db:"sex"`
  13. Email string `db:"email"`
  14. }
  15.  
  16. type Place struct {
  17. Country string `db:"country"`
  18. City string `db:"city"`
  19. TelCode int `db:"telcode"`
  20. }
  21.  
  22. var Db *sqlx.DB
  23. func init() {
  24. database,err := sqlx.Open("MysqL","root:root@tcp(127.0.0.1:3306)/safly")
  25. if err != nil {
  26. fmt.Println("open MysqL Failed,",err)
  27. return
  28. }
  29. Db = database
  30. }
  31.  
  32. func main() {
  33. r,err := Db.Exec("insert into person(username,sex,email)values(?,?,?)","stu001","man","stu01@qq.com")
  34. if err != nil {
  35. fmt.Println("exec Failed,err)
  36. return
  37. }
  38. id,err := r.LastInsertId()
  39. if err != nil {
  40. fmt.Println("exec Failed,err)
  41. return
  42. }
  43. fmt.Println("insert succ:",id)
  44. }
  1. MysqL> select * from person; +---------+----------+------+--------------+
  2. | user_id | username | sex | email | +---------+----------+------+--------------+
  3. | 1 | stu001 | man | stu01@qq.com | +---------+----------+------+--------------+
  4. 1 row in set (0.00 sec)

查询

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. _ "github.com/go-sql-driver/MysqL"
  6. "github.com/jmoiron/sqlx"
  7. )
  8.  
  9. type Person struct {
  10. UserId int `db:"user_id"`
  11. Username string `db:"username"`
  12. Sex string `db:"sex"`
  13. Email string `db:"email"`
  14. }
  15.  
  16. type Place struct {
  17. Country string `db:"country"`
  18. City string `db:"city"`
  19. TelCode int `db:"telcode"`
  20. }
  21. var Db *sqlx.DB
  22. func init() {
  23.  
  24. database,err)
  25. return
  26. }
  27.  
  28. Db = database
  29. }
  30.  
  31. func main() {
  32.  
  33. var person []Person
  34. err := Db.Select(&person,"select user_id,username,email from person where user_id=?", 1)
  35. if err != nil {
  36. fmt.Println("exec Failed,err)
  37. return
  38. }
  39. fmt.Println("select succ:",person)
  40. }

输出如下:

  1. PS E:\golang\go_pro\src\safly> go run demo.go
  2. select succ: [{1 stu001 man stu01@qq.com}]
  3. PS E:\golang\go_pro\src\safly>

修改

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. _ "github.com/go-sql-driver/MysqL"
  6. "github.com/jmoiron/sqlx"
  7. )
  8.  
  9. type Person struct {
  10. UserId int `db:"user_id"`
  11. Username string `db:"username"`
  12. Sex string `db:"sex"`
  13. Email string `db:"email"`
  14. }
  15.  
  16. type Place struct {
  17. Country string `db:"country"`
  18. City string `db:"city"`
  19. TelCode int `db:"telcode"`
  20. }
  21.  
  22. var Db *sqlx.DB
  23.  
  24. func init() {
  25.  
  26. database,err)
  27. return
  28. }
  29.  
  30. Db = database
  31. }
  32.  
  33. func main() {
  34.  
  35. _,err := Db.Exec("update person set username=? where user_id=?","stu0001",err)
  36. return
  37. }
  38.  
  39. }
  1. MysqL> select * from person; +---------+----------+------+--------------+
  2. | user_id | username | sex | email | +---------+----------+------+--------------+
  3. | 1 | stu0001 | man | stu01@qq.com | +---------+----------+------+--------------+
  4. 1 row in set (0.00 sec)

删除

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. _ "github.com/go-sql-driver/MysqL"
  6. "github.com/jmoiron/sqlx"
  7. )
  8.  
  9. type Person struct {
  10. UserId int `db:"user_id"`
  11. Username string `db:"username"`
  12. Sex string `db:"sex"`
  13. Email string `db:"email"`
  14. }
  15.  
  16. type Place struct {
  17. Country string `db:"country"`
  18. City string `db:"city"`
  19. TelCode int `db:"telcode"`
  20. }
  21.  
  22. var Db *sqlx.DB
  23.  
  24. func init() {
  25.  
  26. database,"root:root@tcp(127.0.0.1:3306)/safly")
  27.  
  28.  
  29. if err != nil {
  30. fmt.Println("open MysqL Failed,err := Db.Exec("delete from person where user_id=?",err)
  31. return
  32. }
  33. fmt.Println("delete succ")
  34. }

输出如下:

  1. MysqL> select * from person;
  2. Empty set (0.00 sec)

猜你在找的Go相关文章