go——beego的數據庫增刪改查

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章