一直都不理解使用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。。。。。。。有點小疏忽,,,明天再研究。