亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Golang > 正文

go語言的sql包原理與用法分析

2020-04-01 19:09:53
字體:
來源:轉載
供稿:網友

本文實例講述了go語言的sql包原理與用法。分享給大家供大家參考,具體如下:

go的sql包是在pkg/database中,里面的兩個包sql和sql/driver可以一起看。建議看這個兩個包之前可以先看看sql文件夾下的doc.txt。這個文檔說了幾點比較重要的:

1 這兩個包是真正Go風格的包。

2 這使用這兩個包就不需要關于并發處理了,也不需要維護自己的數據庫連接池了,一旦建立了一個連接,這個連接是可以在各個goroutine之間共用的。

3 sql/driver提供的是數據庫的接口,具體的實現還需要自己實現。

先看database/driver包

第一個用到的方法是Register

這個方法將實現了driver.Driver的驅動注冊到變量drivers中,當寫完一個驅動之后,就需要將驅動注冊到sql中才能使用sql包中的這些接口。這個實現了driver.Driver的必須實現了Open方法.

driver.Open返回的是driver.Conn,它的三個方法

Prepare : 參數綁定
Close : 關閉連接
Begin : 支持事務

先看Prepare,這個和php mysql pdo一樣的用法

Conn.Prepare("select * from test where a=?")

返回的Stmt結構:

Close : 關閉這個statement
NumInput : 返回有多少個可以綁定的參數
Exec : Insert或者update等無返回的使用
Query :select等查詢操作使用
Exec是綁定變量,然后返回Result結構
Query是綁定變量,然后返回Rows結果集

看Result里面的方法:

LastInsertId()  : Insert操作之后獲取到的主鍵id
RowsAffect() : 影響到的行數
Rows:
Columns() : 返回的數據有哪些列,其實就是返回的表列名
Close() : 關閉Rows,調用之后不能再進行任何操作
Next() : 將下一行的數據取到des[] Value中。這里的Value接口可以是int64,float64,bool,[]byte,string,time.Time

下面回到Begin,返回了Tx

開始事務之后除了查詢之外,就兩種行為:Commit和Rollback,這兩種行為都是Tx接口的方法

drvier中的結構全是接口性質的,它需要你來實現并注冊到Register中。

驅動的具體使用是在database/sql中

首先將幾個sql的結構看一遍

首先sql中的結構都是對driver中的結構進行了一層封裝,比如像Rows,有個內部屬性是rowsi driver.Rows。

對sql的實際操作都是使用driver.Rows里面的接口進行操作的,實際也就是使用你自己實現的driver進行操作。

driver和sql就像插頭和一個充滿插頭的汽車一樣,你實現了driver,即實現了這些插頭的配置,你就可使用sql這個汽車了。

Result : 和driver中的Result一致,即你如果實現了driver.Result,那你自然就實現了sql.Result。它是個接口,其實沒有什么特殊的用處,如果sql包中的所有Result都換成driver.Result也是行的,估計是作者希望返回值不要引用到其他包去,就使用這種方法。

Rows :  基于了driver.Rows, 還在上面擴展了幾個其他的方法。擁有方法:

Close
Cloumns
Err
Next
Scan
Stmt :基于driver.Stmt。擁有方法
Close
Exec
Query
QueryRow
Tx:基于driver.Tx。擁有方法:
Commit
Exec
Prepare
Query
QueryRow
Rollback
Stmt

從sql.Open開始

返回了sql.DB結構,這個結構是實現了driver.Conn結構,除了Conn已有的Prepare,Begin,Close之外,還直接多了幾個查詢方法:

Driver() : 返回當前驅動
Exec() : 直接進行操作
Query() : 進行查詢,返回Rows
QueryRow() : 預期返回單行,返回Row

不管Rows還是Row都有個很好用的方法Scan來將數據放到制定的變量中去。

比如下面就是典型的Rows用法

 

復制代碼 代碼如下:
rows, err := db.Query("SELECT ...")
...
for rows.Next() {
var id int
var name string
err = rows.Scan(&id, &name)
...
}

 

Prepare返回Stmt結構

Exec返回Result結構

至于這幾個結構也有各自的方法。

希望本文所述對大家Go語言程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
性欧美在线看片a免费观看| 亲爱的老师9免费观看全集电视剧| 久久久久99精品久久久久| 国产日韩欧美中文在线播放| 国内精品国产三级国产在线专| 国产精品91久久久久久| 国产成人在线亚洲欧美| 超碰97人人做人人爱少妇| 中文字幕在线看视频国产欧美| 亚洲成av人影院在线观看| 深夜成人在线观看| 久久露脸国产精品| 亚洲少妇中文在线| 国产69精品久久久久9| 欧美劲爆第一页| 国产精品久久电影观看| 亚洲精品一二区| 欧美激情2020午夜免费观看| 欧美综合一区第一页| 国产精品日韩在线观看| 日韩精品极品在线观看| www.欧美免费| 伊人伊人伊人久久| 亚洲丁香婷深爱综合| 日韩国产中文字幕| 高清亚洲成在人网站天堂| 91久久国产婷婷一区二区| 欧美性理论片在线观看片免费| 一区二区三区在线播放欧美| 57pao成人永久免费视频| 国产一区二区三区免费视频| 一区二区欧美激情| 久久亚洲精品网站| 日韩精品一区二区三区第95| 久久久噜噜噜久久中文字免| 亚洲欧洲在线看| 日本三级韩国三级久久| 欧美午夜精品久久久久久久| 日韩中文字幕在线精品| 国产欧美精品久久久| 欧美激情视频一区| 亚洲乱码av中文一区二区| 日本午夜人人精品| 日韩视频永久免费观看| 在线观看中文字幕亚洲| 97碰碰碰免费色视频| 亚洲一区制服诱惑| 国产精品专区h在线观看| 亚洲成人激情图| 91av福利视频| 国产精品国产三级国产aⅴ浪潮| 伊人久久五月天| 国产精品pans私拍| 亚洲精品动漫久久久久| 国内外成人免费激情在线视频网站| 97av视频在线| 8090成年在线看片午夜| 精品国产鲁一鲁一区二区张丽| 亚洲色图欧美制服丝袜另类第一页| 一本一道久久a久久精品逆3p| 97avcom| 亚洲区在线播放| 国产在线精品播放| 91高潮精品免费porn| 亚洲三级黄色在线观看| 亚洲精品动漫久久久久| 欧美性生活大片免费观看网址| 欧美久久久精品| 亚洲免费影视第一页| 久久久久久久久久国产| 亚洲精品中文字幕av| 日韩精品免费在线视频| 欧美成年人在线观看| 欧美日韩在线免费观看| 中文日韩电影网站| 欧美在线免费看| 欧美激情高清视频| 社区色欧美激情 | 久久久久久国产精品久久| 亚洲欧美国内爽妇网| 亚洲国产日韩精品在线| 日韩欧美在线视频观看| 精品久久久久久中文字幕一区奶水| 色偷偷91综合久久噜噜| 国产在线观看精品一区二区三区| 欧美体内谢she精2性欧美| 在线观看欧美日韩| 久久视频免费在线播放| 一区二区三区久久精品| 日韩精品在线视频美女| 国产一区二区三区毛片| 北条麻妃一区二区三区中文字幕| 日本道色综合久久影院| 最好看的2019的中文字幕视频| 亚洲人午夜精品| 国产suv精品一区二区三区88区| 国产精品久久视频| 91视频国产高清| 夜夜嗨av色一区二区不卡| 中文字幕亚洲一区| 日韩欧美国产视频| 青草青草久热精品视频在线网站| 日本91av在线播放| 久久精品青青大伊人av| 亚洲美女激情视频| 欧美日韩久久久久| 日韩激情片免费| 亚洲性av在线| 国产精品久久久久91| 久久影院模特热| 91麻豆国产语对白在线观看| 亚洲男人天堂古典| 亚洲三级 欧美三级| 国产99视频精品免视看7| 日韩视频免费看| 国产精品久久久亚洲| 国产国语videosex另类| 91九色视频在线| 亚洲精品美女免费| 日韩中文字幕网址| 97视频在线观看免费高清完整版在线观看| 91社区国产高清| 欧美日韩一区二区精品| 日韩成人免费视频| 国产精品自产拍在线观看| 国产亚洲成精品久久| 一本久久综合亚洲鲁鲁| 久久亚洲一区二区三区四区五区高| 欧美巨大黑人极品精男| 欧美理论电影在线观看| 91午夜在线播放| 国产午夜精品理论片a级探花| 久久精品成人欧美大片| 91a在线视频| 国产精品久久久久久久久久尿| 欧美性xxxx极品高清hd直播| 亚洲欧美日韩另类| 欧美成人黄色小视频| 亚洲天天在线日亚洲洲精| 欧美另类极品videosbest最新版本| 成人h片在线播放免费网站| 精品国产区一区二区三区在线观看| 欧美激情一区二区三级高清视频| 亚洲国产欧美一区二区三区久久| 久久综合久久美利坚合众国| 日韩美女在线观看一区| 欧美色另类天堂2015| 国产精品一区久久久| 亚洲欧洲日本专区| 亚洲黄色www| 亚洲福利视频二区| 欧美日韩激情小视频| 91精品中文在线| 亚洲第一av网| 色婷婷av一区二区三区久久| 国产日韩av高清| 亚洲色图综合网| 精品网站999www| 成人欧美一区二区三区在线湿哒哒| 91精品国产91久久久久| 亚洲精品suv精品一区二区| 在线播放精品一区二区三区| 伊人久久五月天| 日韩欧美国产激情|