使用Ubuntu自帶遠端桌面
阿新 • • 發佈:2021-11-08
1. 安裝mysql驅動庫和sqlx基於官方sql庫的擴充套件庫
go get github.com/go-sql-driver/mysql go get github.com/jmoiron/sqlx
2. 連結mysql
package main import ( "fmt" _ "github.com/go-sql-driver/mysql" // 初始化mysql驅動 "github.com/jmoiron/sqlx" // sqlx是一個庫,為go標準庫database/sql提供了一組擴充套件 ) var db *sqlx.DB func init() { // 初始化 database, err := sql.Open("mysql", "username:password@protocal(host:port)/db_name") if err != nil { fmt.Println("open mysql field", err) return } db = database }
3. insert
func main() { defer db.Close() result, err := db.Exec("insert into person(username, sex, email)values(?,?,?)", "abc", "男", "[email protected]") if err != nil { fmt.Println("Exec failed", err) return } lastId, err := result.LastInsertId() if err != nil { fmt.Println("exec failed", err) return } fmt.Println("insert success", lastId) }
4. select
type Person struct { Userid int `db:"user_id"` Username string `db:"username"` Sex string `db:"sex"` Email string `db:"email"` } func main() { defer db.Close() var person []Person if err := db.Select(&person, "select user_id, username, sex, email from person where user_id = ?;", 2); err != nil { fmt.Println("select failed", err) return } fmt.Println("select success", person) }
5. update
func main() { result, err := db.Exec("update person set username = ? where user_id = ?", "嘿嘿2", 2) if err != nil { fmt.Println("exec failed", err) return } rows, err := result.RowsAffected() if err != nil { fmt.Println("exec failed", err) } fmt.Println("update success", rows) }
6. delete
func main() { result, err := db.Exec("delete from person where user_id = ?", 2) if err != nil { fmt.Println("exec failed", err) return } rows, err := result.RowsAffected() if err != nil { fmt.Println("exec failed", err) } fmt.Println("delete success", rows) }
7. mysql事務
func main() { conn, err := db.Begin() // 開啟事務 if err != nil { fmt.Println("begin err", err) return } result, err := conn.Exec("insert into person(username, sex, email)values(?,?,?)", "張三", "女", "[email protected]") if err != nil { fmt.Println("exec failed", err) conn.Rollback() // 回滾事務 return } rows, err := result.RowsAffected() if err != nil { fmt.Println("exec failed", err) conn.Rollback() // 回滾事務 return } conn.Commit() // 提交事務 fmt.Println("delete success", rows) }