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

      一直都不理解使用go語言的時候,爲何還要本身去裝beego,覺得使用go即可以解決全部的問題,結果在朋友的點撥下,才意識到:node

      go與beego的關係就比如是nodejs與thinkjs的關係,所以也就不怎麼存在疑問爲何還要繼續安裝beego來完成項目運行了,beego其實就是一個快速開發Go應用的http框架,go 語言方面技術大牛,能夠用來快速開發API、Web、後端服務等各類應用,是一個RESTFul的框架。再次附上beego的官網(http://beego.me/docs/intro/)mysql

       接着開始咱們的數據庫「增刪改查」操做吧!git

1.golang自己沒有提供鏈接MySQL的驅動,可是定義了標準接口供第三方開發驅動。這裏鏈接mysql可使用第三方庫,第三方庫推薦使用https://github.com/Go-SQL-Driver/MySQL這個驅動,更新維護都比較好;先要下載驅動,在cmd中執行github

go get github.com/go-sql-driver/mysql

 

2.建立測試數據庫(咱們一直在用的Navicat,就用它作例子)golang

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函數進行鏈接sql

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。。。。。。。有點小疏忽,,,明天再研究。socket

相關文章
相關標籤/搜索