首頁 > 後端開發 > Golang > 如何使用 Golang 執行原生 SQL 查詢?

如何使用 Golang 執行原生 SQL 查詢?

WBOY
發布: 2024-06-01 10:00:58
原創
624 人瀏覽過

如何在 Go 中執行原生 SQL 查詢:匯入必要套件(如 database/sql 和資料庫驅動程式)。開啟資料庫連線。使用 db.Prepare 方法準備 SQL 語句。使用 stmt.Query 方法執行查詢,提供動態值。使用 rows.Next 和 rows.Scan 遍歷查詢結果。關閉資料庫連線以釋放資源。

如何使用 Golang 执行原生 SQL 查询?

如何在 Golang 中執行原生 SQL 查詢?

Golang 提供了一個強大的 SQL 資料庫包,可讓您使用原生 SQL 查詢與關聯式資料庫進行互動。本教學將指導您如何使用 Golang 執行原生 SQL 查詢,並提供一個實戰案例。

導入必要的套件

首先,您需要導入必要的套件:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql" // MySQL 驱动程序
)
登入後複製

注意:不同的資料庫將需要其自己的驅動程序。有關支援的驅動程式的列表,請參閱 [godoc](https://godoc.org/database/sql/driver)。

開啟資料庫連線

接下來,開啟一個資料庫連線:

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

確保將user, password , host, portdatabase替換為對應的值。

準備SQL 語句

要準備SQL 查詢,請使用Prepare 方法:

stmt, err := db.Prepare("SELECT * FROM users WHERE name = ?")
if err != nil {
    log.Fatal(err)
}
登入後複製

這會建立一個預先編譯的SQL 語句,用於稍後執行。 ?佔位符表示將在執行期間替換的動態值。

執行SQL 查詢

要使用指定的動態值執行查詢,請使用Query 方法:

rows, err := stmt.Query("John")
if err != nil {
    log.Fatal(err)
}
登入後複製

這將傳回一個Rows 對象,它包含查詢結果。

處理查詢結果

要遍歷查詢結果,請使用Scan 方法:

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)
}
登入後複製

關閉資料庫連接

最後,關閉資料庫連線以釋放資源:

db.Close()
登入後複製

實戰案例

以下是實戰案例,示範如何向資料庫中插入一筆記錄並取得它:

package main

import (
    "database/sql"
    "fmt"

    _ "github.com/go-sql-driver/mysql" // MySQL 驱动程序
)

func main() {
    db, err := sql.Open("mysql", "user:password@tcp(host:port)/database")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    stmt, err := db.Prepare("INSERT INTO users (name) VALUES (?)")
    if err != nil {
        log.Fatal(err)
    }

    _, err = stmt.Exec("Jane")
    if err != nil {
        log.Fatal(err)
    }

    stmt, err = db.Prepare("SELECT * FROM users WHERE name = ?")
    if err != nil {
        log.Fatal(err)
    }

    rows, err := stmt.Query("Jane")
    if err != nil {
        log.Fatal(err)
    }

    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)
    }
}
登入後複製

以上是如何使用 Golang 執行原生 SQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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