ホームページ >バックエンド開発 >Golang >golangでmysqlにクエリを実行する方法

golangでmysqlにクエリを実行する方法

王林
王林オリジナル
2023-05-14 19:46:061518ブラウズ

インターネットの発展に伴い、データの処理と管理はさまざまな業界で重要な部分になりました。データベース管理システム (DBMS) は、多くの企業が日常の運用と管理で使用するデータベースを管理およびアクセスするためのソフトウェア システムです。 MySQL は、一般的に使用されるリレーショナル データベース管理システムの 1 つです。開発中には、MySQL に接続して操作するためにプログラミング言語を使用する必要がある場合がありますが、この記事では、Go 言語を使用して MySQL データベースにクエリを実行する方法を紹介します。

1. MySQL ドライバーをインストールする

Go 言語の公式 Web サイトでは、MySQL データベース ドライバーが提供され、さまざまな MySQL バージョンをサポートしています。 MySQL ドライバーをインストールするには、システムに Go 言語開発環境と MySQL データベースが必要です。

  1. コマンド ラインを開き、次のコマンドを使用して MySQL ドライバーをインストールします:

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

go-sql-driver パッケージには MySQL クエリの基本機能が用意されており、これを使用して MySQL クエリを実行できるようになりました。

2. データベース接続を確立する

Go 言語を使用して MySQL クエリを実行する前に、MySQL データベースへの接続を確立する必要があります。 MySQL データベースに接続するには、ユーザー名、パスワード、データベース名、ホスト アドレスなどの情報を指定する必要があります。

  1. Go 言語エディタ (例: VSCode) を開き、db.go という名前の新しいファイルを作成します。
  2. ファイルに次のコードを入力します:
package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {

    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/databaseName")

    if err != nil {
        log.Fatal(err)
    }

    defer db.Close()

    err = db.Ping()

    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Successful database connection")
}

上記のコードでは、sql.Open() 関数を使用するときにドライバー名とデータベース接続文字列を指定する必要があります。 MySQL データベース接続を開きます。接続文字列では、ユーザー名とパスワード、および MySQL ホスト アドレスとポート番号を指定します。 MySQL に接続する場合、MySQL ドライバーは接続応答の処理を担当し、このデータベースへの接続が成功すると、データベース オブジェクトへのポインターが返されます。すべての問題が解決したら、db.Close() を使用して接続を閉じ、接続リークによるデータベース リソースの過度の消費が発生しないようにする必要があります。

3. クエリ ステートメントの実行

SQL データベース接続を取得したら、クエリ ステートメントと操作ステートメントの実行を開始できます。以下は、単純なクエリ ステートメントのコマンド例です。

rows, err := db.Query("SELECT id, name, age FROM user")

上記のクエリ ステートメントは、user という名前のテーブルの id、name、および age フィールドをクエリできます。 db.Query() メソッドを使用すると、クエリが実行され、クエリ結果の行オブジェクト (行) と考えられるエラー (err) が返されます。クエリの結果データは行オブジェクト (行) にラップされます。

もちろん、実行する必要がある SQL ステートメントにパラメーターが含まれている場合は、プレースホルダーを使用する必要があります。例は次のとおりです。

rows, err := db.Query("SELECT id, name, age FROM user WHERE name = ? AND age = ?", "John", 30)

プレースホルダは、クエリを実行する前に正しい SQL 形式に自動的に変換され、クエリに必要なパラメータが SQL ドライバに渡されます。このアプローチにより、SQL インジェクション攻撃を防止し、クエリ ステートメントを安全に保ちます。

4. クエリ結果の処理

MySQL データベースにクエリを実行した後、Rows オブジェクトを使用して結果セットからデータを読み取ることができます。 Rows オブジェクトは、クエリの結果データを操作するための一連のメソッドを提供します。たとえば、Scan() メソッドを使用して、結果セットの各行 (行) の各列 (列) を抽出できます。

for rows.Next() {
    var id int
    var name string
    var age int
    err := rows.Scan(&id, &name, &age)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("ID:%d, Name:%s, Age:%d", id, name, age)
}

上記のコードでは、rows.Next() と rows を使用します。 Scan() メソッドはデータの各行を抽出し、コンソールに出力します。 rows.Next() メソッドが次の行を指している場合、 rows.Scan() メソッドを使用してその行の行データを抽出できます。 Scan() メソッドのパラメータは、データの各列のアドレスです。

5. 完全なコード例

以下は、Go 言語を使用して MySQL にクエリを実行する完全なサンプル プログラムであり、db.go ファイルとして保存できます:

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {

    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/databaseName")

    if err != nil {
        log.Fatal(err)
    }

    defer db.Close()

    err = db.Ping()

    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Successful database connection")

    rows, err := db.Query("SELECT id, name, age FROM user")

    if err != nil {
        log.Fatal(err)
    }

    defer rows.Close()

    for rows.Next() {
        var id int
        var name string
        var age int
        err := rows.Scan(&id, &name, &age)
        if err != nil {
            log.Fatal(err)
        }
        fmt.Printf("ID:%d, Name:%s, Age:%d
", id, name, age)
    }

    err = rows.Err()

    if err != nil {
        log.Fatal(err)
    }

}

概要

この記事では、Go 言語で MySQL データベースにクエリを実行する方法を学びました。まず、MySQL ドライバーをインストールし、次に MySQL データベースへの接続を確立する必要があります。データベース接続を取得したら、クエリと操作ステートメントを実行し、Rows オブジェクトを使用して結果セットからデータを読み取ることができます。最後に、MySQL データベースに接続、クエリ、読み取りを行う方法を示す完全な Go 言語プログラムの例を示します。

以上がgolangでmysqlにクエリを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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