zoukankan      html  css  js  c++  java
  • go : 连接数据库并插入数据

     
    package main
    import (
    	"database/sql"
    	"fmt"
    	"log"
    	"net/http"
    	"reflect"
    	"strings"
    	_ "github.com/go-sql-driver/mysql"	
    )
    func sayhelloName(w http.ResponseWriter, r *http.Request) {
    	r.ParseForm()       //解析参数,默认是不会解析的
    	fmt.Println(r.Form) //这些信息是输出到服务器端的打印信息
    	fmt.Println("path", r.URL.Path)
    	fmt.Println("scheme", r.URL.Scheme)
    	fmt.Println(r.Form["url_long"])
    	fmt.Println("type:", reflect.TypeOf(r))
    	//	printData(r)
    	fmt.Fprintf(w, "Hello astaxie!") //这个写入到w的是输出到客户端的
    	var ret int
    	ret = max(1, 2)
    	fmt.Printf("最大值是 : %d
    ", ret)
    	dbFun(r)
    }
    func main() {
    	http.HandleFunc("/hello", sayhelloName)  //设置访问的路由
    	err := http.ListenAndServe(":9091", nil) //设置监听的端口
    	if err != nil {
    		log.Fatal("ListenAndServe: ", err)
    	}
    }
    func max(num1, num2 int) int {
    	/* 定义局部变量 */
    	var result int
    	if num1 > num2 {
    		result = num1
    	} else {
    		result = num2
    	}
    	return result
    }
    func printData(a *http.Request) {
    	//	fmt.Println("num", a)
    	var str string
    	fmt.Println(a.Form)
    	fmt.Println(a.Form["name"])
    	str = string(a.Form["name"][0])
    	fmt.Println(str)
    	for k, v := range a.Form {
    		fmt.Println("key:", k)
    		fmt.Println("val:", strings.Join(v, ""))
    	}
    }
    func dbFun(a *http.Request) {
    	fmt.Println("===database===")
    	//初始化数据库信息,此时就是一个数据库连接池
    	db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8")
    	fmt.Println("type2:", reflect.TypeOf(db))
    	IsErr(err)
    	//封装SQL指令
    	stmt, err := db.Prepare("INSERT hello SET name=?,age=?")
    	IsErr(err)
    	//执行影响指令	
    	var balance [2]string
    	balance[0] = a.Form["name"][0]
    	balance[1] = a.Form["age"][0]
    	result, err := stmt.Exec(balance[0], balance[1])
    	IsErr(err)
    	fmt.Print(result.RowsAffected())
    	defer stmt.Close()
    	defer db.Close()
    }
    func IsErr(err error) {
    	if err != nil {
    		fmt.Println("程晗错误:%s", err)
    	}
    }
    

      

    然后浏览器访问 http://localhost:9091/hello ,就可以插入数据了。

    比如用Postman提交数据:

    关于数据类型:

      *http.Request 的数据类型就是 *http.Request(指针),直接照着传过去就行了。

    为什么是a.Form["name"][0]?

      因为post传上来的数据的结构是这样的:

    参考:

    https://studygolang.com/articles/5269

    https://www.cnblogs.com/zhja/p/5604553.html

  • 相关阅读:
    iOS学习——键盘弹出遮挡输入框问题解决方案
    知识扩展——Git和GitHub的区别
    iOS项目——项目开发环境搭建
    iOS学习——iOS项目Project 和 Targets配置详解
    iOS扩展——Objective-C开发编程规范
    iOS学习——Xcode9上传项目到GitHub
    Mac OS Sierra如何打开任何来源
    iOS学习——UIAlertController详解
    iOS学习——获取iOS设备的各种信息
    Drag and drop folder to a TextBox in C#
  • 原文地址:https://www.cnblogs.com/foxcharon/p/8961412.html
Copyright © 2011-2022 走看看