真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語(yǔ)言中Query go語(yǔ)言中文文檔

golang-gin框架參數(shù)解析

g.GetHeader("token")

專(zhuān)業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶(hù)和效益!創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站負(fù)責(zé)任的成都網(wǎng)站制作公司!

g.Request.Header.Get("token")

h := HeaderParam{}?

g.ShouldBindHeader(h)? ? ? ? ? ?//使用結(jié)構(gòu)體可以解析,map無(wú)效

如:測(cè)試

g.DefaultQuery("test","")

g.Query("test")

g.Request.URL.Query().Get("test")

//text類(lèi)型參數(shù)

formP,ok := g.GetPostForm("test")

formP := g.DefaultPostForm("test","")

formP :=g.Request.PostForm.Get("test")

//file類(lèi)型

file,err := r.FormFile("file")? ? //單個(gè)

//多個(gè)formData解析

formDatas,err := r.MultipartForm()

if err !=nil formDatas !=nil {

files := formDatas.File["files"]

textParams := formDatas.Value["params"]

}

數(shù)據(jù)解析,同一個(gè)參數(shù),只可調(diào)用一次,不然會(huì)EOF

1、定義結(jié)構(gòu)體解析

uploadInfo :=model.UploadInfo{}

err := c.ShouldBindJSON(uploadInfo)

2、可用map解析出來(lái)后再遍歷

uploadInfo?:= make(map[string]interface{})

err := c.ShouldBindJSON(uploadInfo)

GO語(yǔ)言(三十二):訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)(下)

在本節(jié)中,您將使用 Go 執(zhí)行 SQL INSERT語(yǔ)句以向數(shù)據(jù)庫(kù)添加新行。

您已經(jīng)了解了如何使用Query和QueryRow處理返回?cái)?shù)據(jù)的 SQL 語(yǔ)句。要執(zhí)行 不 返回?cái)?shù)據(jù)的 SQL 語(yǔ)句,請(qǐng)使用Exec.

1、在albumByID下面,粘貼以下addAlbum函數(shù)以在數(shù)據(jù)庫(kù)中插入新專(zhuān)輯,然后保存 main.go。

在此代碼中:

(1)用DB.Exec執(zhí)行INSERT語(yǔ)句。

Exec接受一條 SQL 語(yǔ)句,后跟 SQL 語(yǔ)句的參數(shù)值。

(2)檢查嘗試INSERT中的錯(cuò)誤。

(3)使用Result.LastInsertId檢索插入的數(shù)據(jù)庫(kù)行的 ID 。

(4)檢查嘗試檢索 ID 的錯(cuò)誤。

2、更新main以調(diào)用新addAlbum函數(shù)。

在main函數(shù)末尾添加以下代碼。

在新代碼中:

(1)調(diào)用addAlbum添加新專(zhuān)輯,將要添加的專(zhuān)輯的 ID 分配給albID變量。

從包含 main.go 目錄的命令行中,運(yùn)行代碼。

恭喜!您剛剛使用 Go 對(duì)關(guān)系數(shù)據(jù)庫(kù)執(zhí)行了簡(jiǎn)單的操作。

本節(jié)包含您使用本教程構(gòu)建的應(yīng)用程序的代碼。

golang的swagger注解

@Tags : 分類(lèi)信息

例如:

@Summary : 操作的簡(jiǎn)短摘要。

例如:

@Description : 操作的詳細(xì)說(shuō)明。

例如:

@Param :參數(shù)信息,用空格分隔的參數(shù)。param name,param type,data type,is mandatory?,comment attribute(optional)

1.參數(shù)名

2.參數(shù)類(lèi)型,可以有的值是 formData、query、path、body、header,formData 表示是 post 請(qǐng)求的數(shù)據(jù),query 表示帶在 url 之后的參數(shù),path 表示請(qǐng)求路徑上得參數(shù),例如上面例子里面的 key,body 表示是一個(gè) raw 數(shù)據(jù)請(qǐng)求,header 表示帶在 header 信息中得參數(shù)。

3.參數(shù)類(lèi)型

4.是否必須

5.注釋

例如:

go語(yǔ)言postgresql數(shù)據(jù)庫(kù)驅(qū)動(dòng)怎么用

PostgreSQL和MySQL比較,它更加龐大一點(diǎn),因?yàn)樗怯脕?lái)替代Oracle而設(shè)計(jì)的。所以在企業(yè)應(yīng)用中采用PostgreSQL是一個(gè)明智的選擇。

現(xiàn)在MySQL被Oracle收購(gòu)之后,有傳聞Oracle正在逐步的封閉MySQL,,鑒于此,將來(lái)我們也許會(huì)選擇PostgreSQL而不是MySQL作為項(xiàng)目的后端數(shù)據(jù)庫(kù)。

1、驅(qū)動(dòng)

Go實(shí)現(xiàn)的支持PostgreSQL的驅(qū)動(dòng)也很多,因?yàn)閲?guó)外很多人在開(kāi)發(fā)中使用了這個(gè)數(shù)據(jù)庫(kù)。

支持database/sql驅(qū)動(dòng),純Go寫(xiě)的

支持database/sql驅(qū)動(dòng),純Go寫(xiě)的

支持database/sql驅(qū)動(dòng),純Go寫(xiě)的

在下面的示例中我采用了第一個(gè)驅(qū)動(dòng),因?yàn)樗壳笆褂玫娜俗疃?,在github上也比較活躍。

2、實(shí)例代碼

數(shù)據(jù)庫(kù)建表語(yǔ)句:

復(fù)制代碼

CREATE TABLE userinfo

(

uid serial NOT NULL,

username character varying(100) NOT NULL,

departname character varying(500) NOT NULL,

Created date,

CONSTRAINT userinfo_pkey PRIMARY KEY (uid)

)

WITH (OIDS=FALSE);

CREATE TABLE userdeatail

(

uid integer,

intro character varying(100),

profile character varying(100)

)

WITH(OIDS=FALSE);

復(fù)制代碼

看下面這個(gè)Go如何操作數(shù)據(jù)庫(kù)表數(shù)據(jù):增刪改查

復(fù)制代碼

package main

import (

"database/sql"

"fmt"

_ "github.com/bmizerany/pq"

)

func main() {

db, err := sql.Open("postgres", "user=astaxie password=astaxie dbname=test sslmode=disable")

checkErr(err)

//插入數(shù)據(jù)

stmt, err := db.Prepare("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) RETURNING uid")

checkErr(err)

res, err := stmt.Exec("astaxie", "研發(fā)部門(mén)", "2012-12-09")

checkErr(err)

//pg不支持這個(gè)函數(shù),因?yàn)樗麤](méi)有類(lèi)似MySQL的自增ID

id, err := res.LastInsertId()

checkErr(err)

fmt.Println(id)

//更新數(shù)據(jù)

stmt, err = db.Prepare("update userinfo set username=$1 where uid=$2")

checkErr(err)

res, err = stmt.Exec("astaxieupdate", 1)

checkErr(err)

affect, err := res.RowsAffected()

checkErr(err)

fmt.Println(affect)

//查詢(xún)數(shù)據(jù)

rows, err := db.Query("SELECT * FROM userinfo")

checkErr(err)

for rows.Next() {

var uid int

var username string

var department string

var created string

err = rows.Scan(uid, username, department, created)

checkErr(err)

fmt.Println(uid)

fmt.Println(username)

fmt.Println(department)

fmt.Println(created)

}

//刪除數(shù)據(jù)

stmt, err = db.Prepare("delete from userinfo where uid=$1")

checkErr(err)

res, err = stmt.Exec(1)

checkErr(err)

affect, err = res.RowsAffected()

checkErr(err)

fmt.Println(affect)

db.Close()

}

func checkErr(err error) {

if err != nil {

panic(err)

}

}

復(fù)制代碼

從上面的代碼我們可以看到,PostgreSQL是通過(guò)$1,$2這種方式來(lái)指定要傳遞的參數(shù),而不是MySQL中的?,另外在sql.Open中的dsn信息的格式也與MySQL的驅(qū)動(dòng)中的dsn格式不一樣,所以在使用時(shí)請(qǐng)注意它們的差異。

還有pg不支持LastInsertId函數(shù),因?yàn)镻ostgreSQL內(nèi)部沒(méi)有實(shí)現(xiàn)類(lèi)似MySQL的自增ID返回,其他的代碼幾乎是一模一樣


網(wǎng)站題目:go語(yǔ)言中Query go語(yǔ)言中文文檔
URL網(wǎng)址:http://weahome.cn/article/dddopje.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部