Go 之基礎速學 (十五) golang 裡整合 MySQL 驅動呼叫資料庫並 for 迴圈遍歷

huxiaobai_001發表於2020-05-20

學習任何一門語言都要操作mysql資料庫,golang也不例外哦,今天就來講講如何整合第三方的mysql驅動,在golang裡面利用mysql的第三方驅動來運算元據庫,並將結果for迴圈遍歷出來,首先你得知道接下來的程式碼主要是幹啥的不是麼?
Go 之基礎速學 (七) golang 裡包的使用 JSON 化 struct 結構體以及 if else 的初次使用
這篇文章當中我們講過如何引入第三方包來完成json的轉化,這裡引入mysql的第三方包也是一樣的道理 開啟git工具git bash here 然後隨便哪個目錄下執行命令:

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

接下來我們就看程式碼吧:

package main
import (
   _ "com.huxiaobai/servicesa"
   "fmt"
   _ "github.com/go-sql-driver/mysql"
   "github.com/pquerna/ffjson/ffjson"
   )
func main(){
    // _ "github.com/go-sql-driver/mysql" 要想使用mysql驅動 就必須要安裝第三方的mysql驅動 執行命令 go get github.com/go-sql-driver/mysql即可
    //之所以在前邊加上_表示我們不需要使用到包裡面的東西 但是我們需要初始化包裡面的東東來使用 前邊我們講過了的
    //root:root@tcp(localhost:3306)/cs?charset=utf8mb4   root使用者名稱:root密碼@tcp的連結方式表示遠端連線(localhost表示ip地址:3306埠號)/cs表示資料庫名稱?charset=utf8mb4表示字符集
    //返回兩個引數 db errdb,err := sql.Open("mysql","root:root@tcp(localhost:3306)/cs?charset=utf8mb4")
        if err != nil{
            fmt.Println("連結錯誤"+err.Error())
            return
        }
        //db.query()表示執行原生sql語句 也是返回兩個值 rows結果集 error發生錯誤時候會返回
        rows,error := db.Query("select gonghao,xingming from user limit 2")
        if error != nil{
            fmt.Println("查詢錯誤"+error.Error())
            return
        }
        //for迴圈 for row.Next(){} 表示迴圈讀取 Next()一行一行的讀取 rows.Next()返回bool型別 知道返回false沒有結果集了就不再進入迴圈
        //for rows.Next(){
        // //定義兩個引數 來接收結果集裡面欄位的值
        // var gonghao string
        // var xingming string
        // //Scan()表示掃描結果集裡面的值並賦值給gonghan和xingming 但是Scan()裡面要求傳入的是引數的記憶體地址  當然是用&符號嘍  要麼你就用new()
        // rows.Scan(&gonghao,&xingming)
        // fmt.Println(gonghao,xingming)
        //}
        //上邊我們是將結果集迴圈出來賦值給了變數 現在我們將結果集取出來賦值給結構體裡面的元素
        var userModel models.UserModela = models.UserModela{}
        for rows.Next(){
                rows.Scan(&userModel.GongHao,&userModel.XingMing) 
                fmt.Println(userModel)
        }
//這樣就會存在一個弊端  我們上邊查出來的是兩條  但是通過結構體  我們只能是獲取到一條  因為上邊的for迴圈是在不斷的改變著結構體裡面的值 到最後只有最後一條是放到了結構體裡面去的
//即使是陣列也不行  陣列規定了長度之後就是無法改變的  所以你不確定查出來有幾條 所以你也就無法使用陣列來存放這些返回值 最好的辦法就是切片 寫一篇部落格來寫哦
        fmt.Println(userModel)
}

重點看程式碼裡面的註釋資訊 涉及到了mysql驅動的使用 資料查詢 for迴圈 還有Scan的解釋 還有結果集賦值給變數 以及結果集賦值給結構體裡面的元素 然後將結構體列印出來的案例

本作品採用《CC 協議》,轉載必須註明作者和本文連結

胡軍

相關文章