package main
import (
"database/sql"
"fmt"
_"github.com/go-sql-driver/mysql"
"net/http"
)
func main() {
//testMySql()
//testHTTP()
testMutHandle()
}
/**
测试mysql增删改查
*/
func testMySql() {
fmt.Println("test mysql")
//连接mysql
db,err:=sql.Open("mysql","root:Figo423$@master@tcp(121.4.96.227:3306)/master")
if err!=nil{
fmt.Println(err)
return
}
defer func() {
//执行完成后关闭db
if db!=nil{
fmt.Println("db 关闭")
db.Close()
}
}()
//连接测试
db.Ping()
//执行sql,新增
//stmt,er:=db.Prepare("insert into test(id,name) values(?,?)")
//修改
//stmt,er:=db.Prepare("update test set name=? where id=?")
//删除
//stmt,er:=db.Prepare("delete from test where id=?")
//查询
stmt,er:=db.Prepare("select * from test")
if er!=nil{
fmt.Println(er.Error())
return
}
//新增
//r,e:=stmt.Exec("3","test1")
//修改
//r,e:=stmt.Exec("andy","1")
//删除
//r,e:=stmt.Exec("3")
//查询
rows,e:=stmt.Query()
defer func() {
if stmt!=nil{
fmt.Println("stmt 关闭")
stmt.Close()
}
}()
if e!=nil{
fmt.Println(e)
return
}
//增,改,删需要判断影响行数
//count,ex:=r.RowsAffected()
//if ex!=nil{
// fmt.Println(ex)
// return
//}
//if count>0{
// fmt.Println("执行成功")
//}else {
// fmt.Println("执行失败")
//}
//循环查询结果
for rows.Next(){
var id int
var name string
rows.Scan(&id,&name)
fmt.Println(id,name)
}
defer func() {
if rows!=nil{
rows.Close()
fmt.Println("关闭数据库行")
}
}()
}
/**
测试Http
*/
func health(resp http.ResponseWriter,req *http.Request) {
resp.Header().Set("Content-Type","text/html;charset=utf-8")
fmt.Fprintln(resp,"<b>hello,world!</b>")
}
func testHTTP() {
//http.HandleFunc("/health",health)
//http.ListenAndServe("localhost:8088",nil)
}
/**
测试多处理器
*/
func first(resp http.ResponseWriter,req *http.Request) {
resp.Header().Set("Content-Type","text/html;charset=utf-8")
fmt.Fprintln(resp,"<b>first!</b>")
}
/**
测试多处理器
*/
func second(resp http.ResponseWriter,req *http.Request) {
resp.Header().Set("Content-Type","text/html;charset=utf-8")
fmt.Fprintln(resp,"<b>second!</b>")
}
func testMutHandle() {
server:=http.Server{Addr: "localhost:8090"}
http.HandleFunc("/first",first)
http.HandleFunc("/second",second)
http.HandleFunc("/param",testGetHeadAndParams)
server.ListenAndServe()
}
/**
测试多处理器
http://localhost:8090/param?name=abc&age=12
*/
func testGetHeadAndParams(resp http.ResponseWriter,req *http.Request) {
h:=req.Header
fmt.Fprintln(resp,h)
//获取header
fmt.Fprintln(resp,h["Accept-Encoding"])
//获取form
req.ParseForm()
fmt.Fprintln(resp,req.Form)
//第一种取法
fmt.Fprintln(resp,req.Form["name"][0])
//第二种取法
fmt.Fprintln(resp,"第二种取法="+req.FormValue("name"))
}