1. 程式人生 > 其它 >使用Ubuntu自帶遠端桌面

使用Ubuntu自帶遠端桌面

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)

}