首頁 > 資料庫 > mysql教程 > golang如何操作mysql數據

golang如何操作mysql數據

王林
發布: 2023-05-27 15:47:13
轉載
1823 人瀏覽過

什麼是 MySQL

由Oracle公司贊助開發的MySQL是一種廣泛應用於網際網路基礎架構中的關聯式資料庫管理系統。它支援多種作業系統和程式語言,包括 Go 語言,並擁有一系列對於大型資料整合和高效能查詢支援良好的特性。

MySQL使用基於表格的資料結構,每行代表一個記錄,每個欄位代表一個欄位。它使用 SQL 語言對資料進行操作,其中最常見的 SQL 操作包括 SELECT、INSERT、UPDATE、DELETE 和 CREATE TABLE。

Go 語言中的 MySQL 驅動程式

在 Go 語言中,我們可以使用第三方 MySQL 驅動程式來連接和查詢 MySQL 資料庫。但是,GO 語言標準庫中已經包含了database/sql 包,這個包已經實現了標準的SQL 資料庫接口,可以和其他方便的流行的SQL 資料庫交互操作,包括MySQL、PostgreSQL 和SQLite等。

因此,在我們開始建立查詢 MySQL 的 Go 應用程式之前,我們需要安裝 MySql 驅動程式。可以使用命令列指令 go get -u github.com/go-sql-driver/mysql 快速安裝。

這是因為在 Go 語言中,所有的資料存取都需要透過 SQL.DB 連線進行。而驅動程式的目的是用來實現 database/sql 的功能中那樣的介面約定。

建立連接

在Go 語言中,建立到MySQL 資料庫的連接是基於連接字串的,連接字串包含連接MySQL 所需的所有參數,如使用者名稱、密碼、主機名稱或IP 位址、連接埠號碼和資料庫名稱等。

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
    log.Fatal(err)
}
登入後複製

查詢資料

在Go 語言中,可以使用db.Query()db.QueryRow()db.Exec() 函數查詢和操作MySQL 資料庫中的資料。

db.Query() 函數用於查詢多筆記錄,傳回一個 *sql.Rows 物件。 db.QueryRow() 函數用於查詢單一記錄,傳回一個*sql.Row 對象,類似於resultset,但它只傳回第一行記錄,通常用於查詢單一唯一記錄。 db.Exec() 函數用來執行非查詢 SQL 語句,例如 INSERT、UPDATE 和 DELETE,傳回一個 sql.Result 物件。

在本例中,我們使用 db.Query() 函數來查詢所有記錄。我們將使用一個簡單的計數器來統計記錄的數量,並將每行資料列印到控制台。

rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
    log.Fatal(err)
}
defer rows.Close()

count := 0
for rows.Next() {
    var id int
    var name string
    if err := rows.Scan(&id, &name); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("id=%d, name=%s\n", id, name)
    count++
}
if err := rows.Err(); err != nil {
    log.Fatal(err)
}

fmt.Printf("Found %d users\n", count)
登入後複製

必須在檢索資料後呼叫 rows.Close() 函數以釋放與 *sql.Rows 關聯的資料庫資源。同時,程式碼中使用了 rows.Next() 函數,它會傳回一個布林值,指示是否還有更多的行可以處理。另外,在這個範例中使用了rows.Scan() 函數將每行記錄的值複製到這個範例中定義的idname 變數中,然後在控制台中列印每個值。

插入資料

我們也可以使用Go 語言插入資料到MySQL 資料庫中,最簡單的方法使用db.Exec() 函數。我們可以將插入語句傳遞到 db.Exec() 函數中,它將以 SQL 語句的形式在 MySQL 中執行。

result, err := db.Exec("INSERT INTO users(name, email) VALUES('John Doe', 'johndoe@gmail.com')")
if err != nil {
    log.Fatal(err)
}

rowsAffected, err := result.RowsAffected()
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Inserted %d rows into users table\n", rowsAffected)
登入後複製

我們可以使用 result.RowsAffected() 來取得結果集中受影響的行數,並使用該數值在控制台中列印更新資料的數量。

以上是golang如何操作mysql數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板