一直都不理解使用go語言的時候,為什麼還要自己去裝beego,以為使用go便可以解決所有的問題,結果在朋友的點撥下,才意識到:
go與beego的關係就好比是nodejs與thinkjs的關係,因此也就不怎麼存在疑問為什麼還要繼續安裝beego來完成專案執行了,beego其實就是一個快速開發Go應用的http框架,go 語言方面技術大牛,可以用來快速開發API、Web、後端服務等各種應用,是一個RESTFul的框架。再次附上beego的官網(http://beego.me/docs/intro/)
接著開始我們的資料庫“增刪改查”操作吧!
1.golang本身沒有提供連線MySQL的驅動,但是定義了標準介面供第三方開發驅動。這裡連線mysql可以使用第三方庫,第三方庫推薦使用https://github.com/Go-SQL-Driver/MySQL這個驅動,更新維護都比較好;先要下載驅動,在cmd中執行
go get github.com/go-sql-driver/mysql
2.建立測試資料庫(我們一直在用的Navicat,就用它做例子)
CREATE DATABASE golang; CREATE TABLE IF NOT EXISTS `golang`.`user` ( `userid` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '使用者編號', `username` VARCHAR(45) NOT NULL COMMENT '使用者名稱稱', `userage` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用者年齡', `usersex` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用者性別', PRIMARY KEY (`userid`)) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '使用者表'
3.連線資料庫:資料庫連線使用datebase/sql Open函式進行連線
db, err := sql.Open("mysql", "user:password@tcp(localhost:5555)/dbname?charset=utf8") 其中連線引數可以有如下幾種形式: user@unix(/path/to/socket)/dbname?charset=utf8 user:password@tcp(localhost:5555)/dbname?charset=utf8 user:password@/dbname user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname
一般,大家都使用第二種。
4.在liteIDE中寫程式,完整程式碼如下:
package main import ( _ "crud/routers" "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { query() } //增加資料 func insert() { db, err := sql.Open("mysql", "root:root@/golang?charset=utf8") checkErr(err) stmt, err := db.Prepare(`INSERT user (userid,username,userage,usersex) values (?,?,?,?)`) checkErr(err) res, err := stmt.Exec(1, "Mary", 20, 1) checkErr(err) id, err := res.LastInsertId() checkErr(err) fmt.Println(id) } //刪除資料 func remove() { db, err := sql.Open("mysql", "root:root@/golang?charset=utf8") checkErr(err) stmt, err := db.Prepare(`DELETE FROM user WHERE userid=?`) checkErr(err) res, err := stmt.Exec(1) checkErr(err) num, err := res.RowsAffected() checkErr(err) fmt.Println(num) } //更新資料 func update() { db, err := sql.Open("mysql", "root:root@/golang?charset=utf8") checkErr(err) stmt, err := db.Prepare(`UPDATE user SET userage=?,usersex=? WHERE userid=?`) checkErr(err) res, err := stmt.Exec(21, 2, 2) checkErr(err) num, err := res.RowsAffected() checkErr(err) fmt.Println(num) } //查詢資料 func query() { db, err := sql.Open("mysql", "root:root@/golang?charset=utf8") checkErr(err) rows, err := db.Query("SELECT * FROM user") checkErr(err) // //普通demo for rows.Next() { var userid int var username string var userage int var usersex int rows.Columns() err = rows.Scan(&userid, &username, &userage, &usersex) checkErr(err) fmt.Println(userid) fmt.Println(username) fmt.Println(userage) fmt.Println(usersex) } } func checkErr(err error) { if err != nil { panic(err) } }
於是就在這個表裡進行增刪改查了……
我並沒有使用beego中的orm框架,是因為剛開始在看的時候忽略了orm。。。。。。。有點小疏忽,,,明天再研究。