ホームページ >バックエンド開発 >Golang >Golang を使用してネイティブ SQL クエリを実行するにはどうすればよいですか?

Golang を使用してネイティブ SQL クエリを実行するにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-06-01 10:00:58632ブラウズ

Go でネイティブ SQL クエリを実行する方法: 必要なパッケージ (データベース/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)
}

userpasswordhostを必ず追加してください, port と database を対応する値に置き換えます。 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

SQL ステートメントの準備

SQL クエリを準備するには、Prepare メソッドを使用します:

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)
}

これにより、後で実行するためにプリコンパイルされた SQL ステートメントが作成されます。 ? プレースホルダーは、実行中に置き換えられる動的な値を表します。

SQL クエリを実行する

指定された動的値でクエリを実行するには、Query メソッドを使用します: 🎜
db.Close()
🎜これは、クエリを含む Rows オブジェクトを返します。結果。 🎜🎜🎜クエリ結果の処理🎜🎜🎜クエリ結果を反復処理するには、Scan メソッドを使用します: 🎜
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)
    }
}
🎜🎜データベース接続を閉じます🎜🎜🎜最後に、データベース接続を閉じてリソースを解放します: 🎜 rrreee🎜🎜実践ケース 🎜🎜🎜 以下は、データベースにレコードを挿入して取得する方法を示す実践的なケースです: 🎜rrreee

以上がGolang を使用してネイティブ SQL クエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。