【Go】连接本地MySQL读取数据

如题。对Go的网页请求参数有一些了解,从头开始呗。

数据库的goods表

package main

import (
    "fmt"
    "log"
    "net/http"
    "strconv"
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

func AddHandler(w http.ResponseWriter, r *http.Request) {
    vars := r.URL.Query()
    a := vars.Get("para")
    b := vars.Get("para2")

    inta, _ := strconv.Atoi(a)
    intb, _ := strconv.Atoi(b)

    fmt.Println(r.Method, r.URL, r.Host, vars)

    fmt.Println(r.Proto)
    fmt.Fprintln(w, inta+intb) 
}

type Good struct {
    Name string
    Count string
    Price string
}

func CheckErr(err error, paras ...string) {
    if err != nil {
        for _, val := range paras {
            log.Println(val)
        }
        log.Fatal(err)
    }
}

func main() {
    db, _ := sql.Open("mysql", "root:pwd@(127.0.0.1:3306)/mysql")
    defer db.Close()
    err := db.Ping()
    CheckErr(err, "SQLErr")

    log.Println("Success")
    query := "select * from goods"
    rows, _ := db.Query(query)

    var id, name, count, price string
    var nameCount map[string] int
    nameCount = make(map[string]int)
    for rows.Next() {
        rows.Scan(&id, &name, &count, &price)
        _count, err := strconv.Atoi(count)
        CheckErr(err, id, name, count, price)
        _, ok := nameCount[name]
        if (ok) {
            nameCount[name] += _count
        } else {
            nameCount[name] = _count
        }
    }

    for k, v := range nameCount {
        fmt.Println(k, v)
    }

    http.HandleFunc("/", AddHandler)
    log.Println("Listen : 15233")
    err = http.ListenAndServe("0.0.0.0:15233", nil)
    CheckErr(err, "ListenErr")
    fmt.Println("Start open")    
}
View Code

运行命令: go run test.go

浏览器地址输入 localhost:15233/get?para=1&para=10。页面上呈现11。

 

posted @ 2020-04-28 12:11  Katrin  阅读(406)  评论(0编辑  收藏  举报