精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go語言操作MySQL之CURD操作

數據庫 MySQL
MySQL 是目前開發中最常見的關系型數據庫,使用 Go 語言進行操控數據庫需要使用 Go 自帶database/sql和驅動go-sql-driver/mysql來實現。

 [[332123]]

MySQL 是目前開發中最常見的關系型數據庫,使用 Go 語言進行操控數據庫需要使用 Go 自帶database/sql和驅動go-sql-driver/mysql來實現,

創建好 Go 項目,需要引用驅動依賴: 

  1. go get -u github.com/go-sql-driver/mysql 

使用 MySQL 驅動: 

  1. func Open(driverName, dataSourceName string) (*DB, error) 

Open 打開一個 dirverName 指定的數據庫,dataSourceName 指定數據源,一般至少包括數據庫文件名和其它連接必要的信息。

初始化連接 

  1. var db *sql.DB //聲明一個全局的 db 變量  
  2. // 初始化 MySQL 函數  
  3. func initMySQL() (err error) {  
  4.     dsn :"root:password@tcp(127.0.0.1:3306)/dbname"  
  5.     db, err = sql.Open("mysql", dsn)  
  6.     if err != nil {  
  7.         return  
  8.     }  
  9.     err = db.Ping()  
  10.     if err != nil {  
  11.         return  
  12.     }  
  13.     return  
  14.  
  15. func main() {  
  16.     // 初始化 MySQL  
  17.     err :initMySQL()  
  18.     if err != nil {  
  19.         panic(err)  
  20.     }  
  21.     defer db.Close()  

初始化連接 MySQL 后需要借助 db.Ping 函數來判斷連接是否成功。

SetMaxOpenConns 

  1. func (db *DB) SetMaxOpenConns(n int) 

SetMaxOpenConns設置與數據庫建立連接的最大數目。

如果 n 大于 0 且小于最大閑置連接數,會將最大閑置連接數減小到匹配最大開啟連接數的限制。

如果 n <= 0,不會限制最大開啟連接數,默認為0(無限制)。

SetMaxIdleConns 

  1. func (db *DB) SetMaxIdleConns(n int) 

SetMaxIdleConns設置連接池中的最大閑置連接數。

如果 n 大于最大開啟連接數,則新的最大閑置連接數會減小到匹配最大開啟連接數的限制。

如果 n <= 0,不會保留閑置連接。

CURD

進行 CURD 操作,需要對數據庫建立連接,同時有供操作的數據(數據庫與數據表):

初始化數據

建立數據庫 sql_demo 

  1. CREATE DATABASE sql_demo;  
  2. USE sql_demo; 

創建數據表 user 

  1. CREATE TABLE `user` (  
  2.     `id` BIGINT(20) NOT NULL AUTO_INCREMENT,  
  3.     `name` VARCHAR(20) DEFAULT '',  
  4.     `age` INT(11) DEFAULT '0',  
  5.     PRIMARY KEY(`id`)  
  6. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4

查詢 SELECT

便于接收數據,定義一個 user 結構體接收數據: 

  1. type user struct {  
  2.     id   int  
  3.     age  int  
  4.     name string  

查詢一行數據

db.QueryRow() 執行一次查詢,并期望返回最多一行結果(即 Row )。QueryRow 總是返回非 nil 的值,直到返回值的 Scan 方法被調用時,才會返回被延遲的錯誤。(如:未找到結果)

  1. func (db *DB) QueryRow(query string, args ...interface{}) *Row 

實例代碼如下: 

  1. // 查詢一行數據  
  2. func queryRowDemo() (u1 *user, err error) {  
  3.     // 聲明查詢語句  
  4.     sqlStr :"SELECT id,name,age FROM user WHERE id = ?"  
  5.     // 聲明一個 user 類型的變量  
  6.     var u user  
  7.     // 執行查詢并且掃描至 u  
  8.     err = db.QueryRow(sqlStr, 1).Scan(&u.id, &u.age, &u.name)  
  9.     if err != nil {  
  10.         return nil, err  
  11.     }  
  12.     u1 = &u  
  13.     return  
  14.  
  15. func main() {  
  16.     // 初始化 MySQL  
  17.     err :initMySQL()  
  18.     if err != nil {  
  19.         panic(err)  
  20.     }  
  21.     defer db.Close()  
  22.     u1, err :queryRowDemo()  
  23.     if err != nil {  
  24.         fmt.Printf("err:%s", err)  
  25.     }  
  26.     fmt.Printf("id:%d, age:%d, name:%s\n", u1.id, u1.age, u1.name)  
  27. 」 

結果如下: 

  1. id:1, age:111, name:22 

多行查詢

db.Query()執行一次查詢,返回多行結果(即 Rows ),一般用于執行 select 命令。參數 args 表示 query 中的占位參數。 

  1. func (db *DB) Query(query string, args ...interface{}) (*Rows, error) 

實例代碼如下: 

  1. // 查詢多行數據  
  2. func queryMultiRowDemo() {  
  3.     sqlStr :"SELECT id,name,age FROM user WHERE id > ?"  
  4.     rows, err :db.Query(sqlStr, 0)  
  5.     if err != nil {  
  6.         fmt.Printf("query data failed,err:%s\n", err)  
  7.         return  
  8.     }  
  9.     // 查詢完數據后需要進行關閉數據庫鏈接  
  10.     defer rows.Close()    
  11.     for rows.Next() {  
  12.         var u user  
  13.         err :rows.Scan(&u.id, &u.age, &u.name)  
  14.         if err != nil {  
  15.             fmt.Printf("scan data failed, err:%v\n", err)  
  16.             return  
  17.         }  
  18.         fmt.Printf("id:%d name:%s age:%d\n", u.id, u.name, u.age)  
  19.     }  

執行結果: 

  1. id:1 name:111 age:22  
  2. id:3 name:張三 age:22 

使用 rows.Next() 循環讀取結果集中的數據。

增加數據 INSERT

增加、刪除、更新操作均使用 Exec 方法。 

  1. func (db *DB) Exec(query string, args ...interface{}) (Result, error) 

實例代碼如下: 

  1. // 增加一行數據  
  2. func insertRowDemo() {  
  3.     sqlStr :"INSERT INTO user(name, age) VALUES(?, ?)"  
  4.     result, err :db.Exec(sqlStr, "小羽", 22)  
  5.     if err != nil {  
  6.         fmt.Printf("insert data failed, err:%v\n", err)  
  7.         return  
  8.     }  
  9.     id, err :result.LastInsertId()  
  10.     if err != nil {  
  11.         fmt.Printf("get insert lastInsertId failed, err:%v\n", err)  
  12.         return 
  13.      }  
  14.     fmt.Printf("insert success, id:%d\n", id)  

執行結果: 

  1. insert success, id:4 

更新數據 UPDATE 

  1. // 更新一組數據  
  2. func updateRowDemo() {  
  3.     sqlStr :"UPDATE user SET age = ? WHERE id = ?"  
  4.     result, err :db.Exec(sqlStr, 22, 1)  
  5.     if err != nil {  
  6.         fmt.Printf("update data failed, err:%v\n", err)  
  7.         return  
  8.     }  
  9.     n, err :result.RowsAffected()  
  10.     if err != nil {  
  11.         fmt.Printf("get rowsaffected failed, err:%v\n", err)  
  12.         return  
  13.     }  
  14.     fmt.Printf("update success, affected rows:%d\n", n)  

刪除數據 DELETE 

  1. // 刪除一行數據  
  2. func deleteRowDemo() {  
  3.     sqlStr :"DELETE FROM user WHERE id = ?"  
  4.     result, err :db.Exec(sqlStr, 2)  
  5.     if err != nil {  
  6.         fmt.Printf("delete data failed, err:%d\n", err)  
  7.         return  
  8.     } 
  9.      n, err :result.RowsAffected() 
  10.      if err != nil {  
  11.         fmt.Printf("get affected failed, err:%v\n", err)  
  12.         return  
  13.     }  
  14.     fmt.Printf("delete success, affected rows:%d\n", n)  
  15.  

 

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2021-01-23 12:47:19

MySQL數據庫Go語言

2024-01-07 19:54:51

2021-01-27 10:01:46

MySQL數據庫SQLX

2023-07-03 00:44:26

Go語言MySQL

2021-10-26 10:51:30

GoxormMySQL

2024-12-30 00:38:23

Go語言微服務

2023-01-31 08:48:49

Go語言文件

2024-03-25 07:22:50

GolangMySQL數據庫

2021-01-13 08:40:04

Go語言文件操作

2021-02-20 10:06:14

語言文件操作

2011-07-15 09:20:52

C語言文件操作

2009-07-01 14:32:37

JSP文件操作

2009-08-18 16:14:05

C# 操作Excel

2009-08-18 16:20:09

C# 操作Excel

2021-08-04 08:56:34

語言Go排序

2021-06-09 09:06:52

Go語言算法

2021-02-06 18:19:54

TimeGo語言

2009-08-19 13:25:53

C#操作注冊表

2012-08-30 10:20:55

Lucene分布式全文檢索

2009-08-19 13:30:58

C#操作注冊表
點贊
收藏

51CTO技術棧公眾號

另类中文字幕网| 日韩欧美高清一区| 98色花堂精品视频在线观看| 男人添女荫道口女人有什么感觉| 午夜视频在线观看一区二区| 日本在线免费中文字幕| 国产女大学生av| 欧美一区二区三区不卡| 岛国成人av| youjizz亚洲女人| 91wwwcom在线观看| 午夜在线精品偷拍| 天堂av在线免费| 强开小嫩苞一区二区三区网站| 欧美色视频日本高清在线观看| 四虎精品在线观看| 99在线视频免费| 日本高清不卡的在线| 91视频com| aaa大片在线观看| 亚洲一级免费在线观看| 欧美成人性战久久| 欧美日韩一区自拍| 国产黄a三级三级看三级| 影音先锋欧美在线| 91精品国产一区二区三区| 国产精品久久久久久久免费观看 | 777777777亚洲妇女| 国产精品一二三在| 97超碰在线公开在线看免费| 国产一级不卡毛片| 在线观看日韩视频| 国产精品magnet| 日韩在线观看视频一区二区三区 | 色综合久久精品亚洲国产| 国产成人精品免费视频网站| a√资源在线| 日本熟妇人妻中出| 欧美成人免费全部| 国产精品一区不卡| 精品精品导航| 美女爆乳18禁www久久久久久| 国产成人jvid在线播放| 1024成人网| 欧美电影在线观看一区| 久久精品性爱视频| 日本一区二区久久精品| 一本一道久久a久久精品| 日韩大片在线| 色婷婷av一区二区三区之红樱桃 | 欧美一区视频在线| 欧美韩国一区二区| eeuss鲁片一区二区三区| youjizz亚洲女人| 国产午夜精品一区| 在线观看91av| 美女久久一区| 高清免费电影在线观看| 性久久久久久久久久| 99r国产精品视频| 91精品黄色片免费大全| 亚洲午夜久久久久久尤物| 成人欧美亚洲| 特级西西人体4444xxxx| 亚洲www视频| 欧美日韩一区不卡| 免费高清视频精品| 欧美一区 二区 三区| 中日韩黄色大片| 手机看片日韩国产| 尤物99国产成人精品视频| www.一区二区| 99久久免费精品国产72精品九九 | 欧美日韩一区三区| 老司机久久99久久精品播放免费| 91xxx在线观看| 日本午夜在线观看| 国产精品无码乱伦| 国产亚洲欧美视频| 国产亚洲短视频| 日韩在线高清| 三区在线观看| 亚洲欧洲久久久| 欧美中文娱乐网| 精品国产拍在线观看| **网站欧美大片在线观看| 欧美hentaied在线观看| 中文字幕伦理免费在线视频| 精品国产aaa| 西游记1978| 日韩最新免费不卡| 精品动漫一区二区三区| 欧美专区在线| 中文字幕成人| 五月天福利视频| 干b视频在线观看| 亚洲一区二区三区精品动漫| 成人444kkkk在线观看| 欧美日韩一区二区免费视频| 久久精品国产一区二区三| 久久久精品区| 四虎影视在线观看2413| xxxx日本免费| 美女一区视频| 美女福利视频一区| 午夜精品福利在线| 九九九久久久精品| 欧美日韩破处| 欧美日韩经典丝袜| 国产乱国产乱老熟| 无码成人精品区在线观看| 欧美一区二区视频17c| 蜜臀久久99精品久久久久久宅男 | 日韩一二三区| 成人免费黄色网页| 亚洲图片在线视频| 亚洲免费av一区二区三区| 精品国产免费久久久久久尖叫| 亚洲女人被黑人巨大进入| 亚洲成人激情av| av电影在线观看不卡| 欧美成人69| 超碰资源在线| 日本一二三区在线视频| 亚洲av无码一区二区三区在线| 女人另类性混交zo| 美乳视频一区二区| 57pao精品| 亚洲色图18p| 精品久久久久人成| 国产欧美一区二区在线观看| 狠狠入ady亚洲精品经典电影| 涩爱av色老久久精品偷偷鲁| 婷婷免费在线视频| av免费观看网址| 免费一级特黄特色大片| 97人妻天天摸天天爽天天| 九色在线视频观看| 婷婷亚洲婷婷综合色香五月| 国产精品白嫩美女在线观看 | 亚洲婷婷综合色高清在线| 亚洲精品看片| 在线看片不卡| 神马久久一区二区三区| 欧美a在线观看| 久久久久久久| 91偷拍与自偷拍精品| 欧美电影一区| 伊人亚洲精品| 国模精品视频| 午夜免费视频在线国产| 在线观看免费高清视频| 动漫精品一区一码二码三码四码| 中国极品少妇videossexhd| 精品人妻大屁股白浆无码| 欧美理论一区二区| 91精品在线影院| 欧美在线视频一区| 欧美精品videosex性欧美| 中文字幕视频一区二区在线有码| 欧美一区二区免费观在线| 在线欧美小视频| 午夜欧美大尺度福利影院在线看| 久久精品日韩一区二区三区| 国产精品66部| 九九热在线视频观看这里只有精品| 黄色亚洲大片免费在线观看| 日本不卡电影| 国产成人一区二区三区影院| 日本国产精品| 香蕉久久精品日日躁夜夜躁| 视频欧美一区| 中文在线综合| 美女视频免费精品| 成人在线超碰| 国产 日韩 欧美 综合 一区| 亚洲一区二区免费在线观看| 日本成人手机在线| 国产麻豆一区| 中文字幕资源网在线观看免费| 19禁羞羞电影院在线观看| 国产精品视频久久久久| 在线国产精品播放| 精品国内亚洲在观看18黄| 精品国产一区二区三区久久狼黑人 | 精品视频免费在线播放| 人人干视频在线| 国产免费黄色av| 亚洲免费av一区二区三区| 亚洲欧美国产中文| 91高清国产视频| 午夜在线观看av| 午夜性福利视频| 日韩免费高清一区二区| 毛片久久久久久| 青青草视频播放| 精品无码一区二区三区蜜臀| 不卡的免费av| 91av久久久| 亚洲国产成人一区二区| 欧美亚洲在线| 美女视频免费一区| 精品一区二区免费看| 久久免费大视频| 国产精品二区不卡| 在线看片日韩| 激情成人午夜视频| 久久免费午夜影院| 亚洲三级在线播放| 欧美亚洲自拍偷拍| 欧美videos中文字幕| 久久精品视频播放| 欧洲成人免费视频| 精品国产综合| 欧美大黑帍在线播放| 午夜啪啪小视频| 麻豆精品免费视频| 国产精品自拍第一页| 国产粉嫩一区二区三区在线观看| 中文字幕在线看片| 国产91一区| 日韩av在线发布| 中文字幕 久热精品 视频在线| 91国内精品野花午夜精品| 亚洲欧美国产精品va在线观看| 91sa在线看| 午夜一区二区三视频在线观看| 韩国视频一区二区三区| 波多野结衣喷潮| 91片黄在线观看喷潮| 18av在线播放| 欧美三级午夜理伦三级在线观看| 亚洲一卡久久| 中文一区在线播放| 精品女同一区二区| 欧美高清不卡在线| 日韩视频在线播放| 狠狠躁狠狠躁视频专区| 久久久国产精华液| 你懂的视频在线| 希岛爱理一区二区三区av高清| 国产一区日韩| 成人综合婷婷国产精品久久| 在线视频欧美区| 欧美日韩国产999| 日韩中文不卡| 初高中福利视频网站| 五月婷婷六月婷婷| 成人毛片av在线| 精品视频黄色| 国产乱人伦精品一区二区在线观看 | 亚洲色图欧美激情| 亚洲精品一区av在线播放| 成人美女av在线直播| 亚洲区一区二区三区| 久久人妻少妇嫩草av无码专区| 888奇米影视| 黄色综合网址| 欧美精品一线| 国产精品久久久一本精品| 精品国产乱码久久久久久浪潮| 国产精品午夜一区二区欲梦| 日本wwwcom| 日本熟妇毛耸耸xxxxxx| 色www永久免费视频首页在线 | 亚洲va久久久噜噜噜久久狠狠 | eeuss影院www在线播放| 久久国产精品美女| 久久成人免费网| 欧美精品久久久久久久多人混战 | 国产一区二区看久久| 欧美亚洲日本国产| 国产精品久久久久不卡| 牛夜精品久久久久久久| 无码人妻丰满熟妇精品| 视频精品导航| 狠狠色丁香婷婷综合| 欧美高清hd18日本| wwwxx欧美| 在线免费观看黄色小视频| 免费国产精品视频| 国产精品22p| 久久精品一区八戒影视| 免费99精品国产自在在线| 成人免费在线视频播放| 日产亚洲一区二区三区| 美女高潮视频在线看| 99在线观看免费视频精品观看| 亚洲网友自拍偷拍| 欧美黑人一级爽快片淫片高清| 丝袜老师办公室里做好紧好爽 | 亚洲色图美腿丝袜| 自拍视频一区二区三区| 久久婷婷综合国产| 草美女在线观看| 久久国产福利国产秒拍| 亚洲大尺度美女在线| 亚洲欧洲精品一区二区| 狠狠躁夜夜躁人人爽天天高潮| 69堂精品视频在线播放| 福利91精品一区二区三区| 色av吧综合网| 国产99久久九九精品无码| 高潮无码精品色欲av午夜福利| 亚洲日本va午夜在线电影| 国产精品网站在线观看| 欧美一级淫片videoshd| 在线观看欧美一区二区| 91网在线播放| 天堂蜜桃一区二区三区| 亚洲黄色免费三级| 亚洲免费在线精品一区| 亚洲永久精品一区| 久久综合亚洲| 日韩欧美在线视频观看| 古典武侠综合av第一页| 久久网免费视频| 北条麻妃在线一区二区免费播放| 亚洲色欲色欲www在线观看| 国产日本欧美视频| 日本成人精品视频| 色老太综合网| 欧美国产日韩亚洲一区| 国产精品免费在线免费| av网站免费在线播放| 视频在线观看入口黄最新永久免费国产 | 国产又粗又黄又爽| 欧美a级片视频| 欧美另类高清zo欧美| 麻豆md0077饥渴少妇| 国产人妖一区二区三区| 激情综合在线| 亚洲视频在线免费看| 天堂av在线网站| 激情视频在线观看| 国产精品69毛片高清亚洲| 尤物九九久久国产精品的分类| 97xxxxx| 国产原创视频在线观看| 成人视屏免费看| 4438全国成人免费| 久久一级免费视频| 1313精品午夜理伦电影| 一区二区三区**美女毛片| 久久久一本精品99久久精品66| 中文字幕激情小说| 希岛爱理一区二区三区| 日韩午夜激情免费电影| www.亚洲成人网| 在线激情网站| 久久精品亚洲麻豆av一区二区| 国产精品偷伦视频免费观看国产| 国产精品久久久精品四季影院| 一道在线中文一区二区三区| 亚洲大胆人体av| 中文字幕在线观看日| 久草免费在线视频| 久久久久久久久久久妇女| 欧美性猛交xxxx久久久| 国产天堂视频在线观看| 日本精品一区二区三区在线播放| 久久久久九九视频| 国产乱码精品一区二区三区中文 | 精品人妻一区二区三区视频| 国产在线不卡一区二区三区| 色综合久久久久久久久| 可以免费观看av毛片| 美女搞黄视频在线观看| 亚洲成精国产精品女| 成人在线观看a| 欧美人体一区二区三区| 欧美视频精品一区| 成年人深夜视频| 忘忧草在线影院两性视频| 精品久久久中文| 国产极品美女高潮无套久久久| 成人黄色在线| 91精品国产91热久久久做人人| 五月天婷婷影视| 日韩成人一区| 日韩精品影音先锋| 女尊高h男高潮呻吟| 给我免费播放日韩视频| 亚洲欧美一区二区三区久久| 99久久99久久精品免费看小说.| 国产精品国产三级国产在线观看| 日韩一区视频在线| 日本一级一片免费视频| 日韩不卡手机在线v区| 国产精品一区二区久久精品| a毛片在线免费观看| 91在线视频18| 在线成人性视频| 唐人社导航福利精品| 制服视频三区第一页精品| 一区二区三区四区不卡| 日本毛片在线观看| 国产欧美日韩综合精品一区二区| 日韩欧美一级在线| 电影亚洲一区|