Golang CRUD demo

Setup your environment

  1. Make sure you have already installed and launched MatrixOne.
  2. Make sure you have already installed Golang 1.18 and plus.

1. #To check with Golang installation and its version 2. go version 3. Make sure you have already installed MySQL client. 4. Download and install Go-MySQL-Driver tool.

Develop your code

  1. Connect to MatrixOne by MySQL client. Create a new database named test.

1. mysql> create database test; 2. Create a plain text file golang_crud_matrixone.go and put the code below.

``` 1. package main

  1. import (
  2. "database/sql"
  3. "fmt"
  4. "log"
  5. _ "github.com/go-sql-driver/mysql"
  6. )

  7. func main() {

  8. //Open a new connection to MatrixOne
  9. db, err := sql.Open("mysql", "dump:111@tcp(127.0.0.1:6001)/test")
  10. checkErr(err)

  11. //Create a table

  12. _, err2 := db.Exec("CREATE TABLE userinfo (uid INT(10) NOT NULL AUTO_INCREMENT,username VARCHAR(64) NULL DEFAULT NULL,department VARCHAR(64) NULL DEFAULT NULL,created DATE NULL DEFAULT NULL, PRIMARY KEY (uid));")
  13. if err2 != nil {
  14. log.Fatal(err2)
  15. }
  16. fmt.Print("Successfully Created\n")

  17. // Insert a record

  18. stmt, err := db.Prepare("INSERT userinfo SET username=?,department=?,created=?")
  19. checkErr(err)

  20. res, err := stmt.Exec("Alex", "r&d", "2023-01-01")

  21. checkErr(err)

  22. id, err := res.LastInsertId()

  23. checkErr(err)

  24. fmt.Println(id)

  25. //Update a record
  26. stmt, err = db.Prepare("update userinfo set username=? where uid=?")
  27. checkErr(err)

  28. res, err = stmt.Exec("Mark", id)

  29. checkErr(err)

  30. affect, err := res.RowsAffected()

  31. checkErr(err)

  32. fmt.Println(affect)

  33. // Query all records

  34. rows, err := db.Query("SELECT * FROM userinfo")
  35. checkErr(err)

  36. for rows.Next() {

  37. var uid int
  38. var username string
  39. var department string
  40. var created string
  41. err = rows.Scan(&uid, &username, &department, &created)
  42. checkErr(err)
  43. fmt.Println(uid)
  44. fmt.Println(username)
  45. fmt.Println(department)
  46. fmt.Println(created)
  47. }

  48. // Delete a record

  49. stmt, err = db.Prepare("delete from userinfo where uid=?")
  50. checkErr(err)

  51. res, err = stmt.Exec(id)

  52. checkErr(err)

  53. affect, err = res.RowsAffected()

  54. checkErr(err)

  55. fmt.Println(affect)

  56. db.Close()

  57. }

  58. func checkErr(err error) {

  59. if err != nil {
  60. panic(err)
  61. }
  62. } ```
  63. Execute this Golang file in the command line terminal.

1. > go run golang_crud_matrixone.go 2. Successfully Created 3. 1 4. 1 5. 1 6. Mark 7. r&d 8. 2023-01-01 9. 1