package main import ( "fmt" "github.com/gohouse/gorose" //import Gorose _ "github.com/go-sql-driver/mysql" //只執行github.com/go-sql-driver/mysql的init函數 "errors" "strconv" ) func main() { //mysql數據庫配置 var DbConfig = map[string]interface{}{ // Default database configuration "Default": "mysql_dev", // (Connection pool) Max open connections, default value 0 means unlimit. "SetMaxOpenConns": 0, // (Connection pool) Max idle connections, default value is 1. "SetMaxIdleConns": 10, // Define the database configuration character "mysql_dev". "Connections": map[string]map[string]string{ "mysql_dev": {// 定義名爲 mysql_dev 的數據庫配置 "host": "192.168.2.179", // 數據庫地址 "username": "a", // 數據庫用戶名 "password": "b@", // 數據庫密碼 "port": "3306", // 端口 "database": "a", // 連接的數據庫名字 "charset": "utf8", // 字符集 "protocol": "tcp", // 連接協議 "prefix": "", // 表前綴 "driver": "mysql", // 數據庫驅動(mysql,sqlite,postgres,oracle,mssql) }, }, } db, err := gorose.Open(DbConfig) if err != nil { panic(err.Error()) } defer db.Close() //延遲關閉 // 簡單查詢 res, err := db.Query("select * from users;") fmt.Println(res) // 條件查詢 res, err = db.Query("select * from users where userid=?",1) fmt.Println(res) //簡單鏈式查詢 fmt.Println(db.Table("users").First()) //帶條件的鏈式查詢 fmt.Println(db.Table("users").Fields("userid as id ,username as name").Where("userid", "=", 3).Get()) //帶別名的查詢 res, err := db.Table("users").Fields("userid as ID,username as Name").Get() // 查詢結果轉成json res,err = db.Table("users").Fields("userid as id ,username as name").Where("userid", "=", 3).Get() jsonStr := db.JsonEncode(res) fmt.Println(jsonStr) //開啓事務,參數是一個匿名函數 db.Transaction(func() error { // 鏈式插入數據 res1 ,err1 := db.Table("version").Data(map[string]interface{}{"MainVersion":1,"SubVersion":2}).Insert(true) if err1 != nil { return err1 } if res1 == 0 { return errors.New("Insert failed") } //鏈式 更新數據 res1,err1 = db.Table("scene").Data(map[string]interface{}{"modelname":"model003"}).Where("id",10).Update() if err1 != nil { return err1 } if res1 == 0 { return errors.New("Update failed") } return nil }) // 事務結束 }