Golangでデータベースクエリを実行する方法

PHPz
リリース: 2023-04-18 09:44:43
オリジナル
1827 人が閲覧しました

Golang は、さまざまなアプリケーション、特に Web 開発で優れたアプリケーションの構築に使用できる、効率的、高速、強力なプログラミング言語です。 Golang をデータベースと組み合わせて使用​​すると、開発者がデータベースを操作するのに役立ついくつかの強力なツールが提供されます。この記事では、Golang がデータベース クエリを実行する方法に焦点を当てます。

1. Golang データベース クエリ

Golang でデータベースをクエリするには、主に 2 つの方法があります: 1 つは標準ライブラリで提供されているデータベース/SQL パッケージを使用する方法、もう 1 つはORM フレームワーク (GORM、XORM など)ここでは、database/sql パッケージを使用してクエリを実行する方法を紹介します。

database/sql は、リレーショナル データベースを操作するための Golang 標準ライブラリのパッケージです。これを使用してデータベースに接続し、インポート、挿入、更新、削除などの操作を実行します。 Database/SQL を使用する前に、対応するデータベース ドライバーをインストールする必要があります。たとえば、MySQL に接続する場合は、MySQL ドライバーをインストールする必要があります。 Golang で一般的に使用されるデータベース ドライバーには、mysql、sqlite、postgres などが含まれます。

2. Golang はデータベースに接続します

database/sql を使用してデータベースにクエリを実行する前に、まずデータベースに接続する必要があります。以下は、MySQL データベースに接続するためのサンプル コードです。

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

func main() {
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name?charset=utf8")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()
}
ログイン後にコピー

その中で、sql.Open() 関数は、データベースの操作に使用できるデータベース オブジェクト db を返します。もう 1 つ注意すべき点は、データベース操作が完了した後、defer キーワードを使用してデータベースを閉じる必要があることです。

3. Golang クエリ データ

データベースへの接続に成功したら、db オブジェクトを通じて SQL ステートメントを実行してデータをクエリできます。以下は、データの一部をクエリするためのサンプル コードです。

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

type User struct {
    Id       int
    Name     string
    Age      int
}

func main() {
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name?charset=utf8")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    var (
        id       int
        name     string
        age      int
    )

    err = db.QueryRow("SELECT id, name, age FROM users WHERE id = ?", 1).Scan(&id, &name, &age)
    switch {
    case err == sql.ErrNoRows:
        fmt.Println("没有这条记录!")
    case err != nil:
        panic(err.Error())
    default:
        user := User{Id:id, Name:name, Age:age}
        fmt.Println(user)
    }
}
ログイン後にコピー

このサンプル コードでは、ユーザー構造 User を定義し、QueryRow() メソッドを通じてデータベース内の ID 1 のデータをクエリします。 QueryRow() メソッドはクエリを実行し、その結果をデータ行にスキャンします。ここでは、Scan() メソッドを使用して、データベース クエリの結果を定義したユーザー データ構造にマッピングし、最後にデータを出力します。

同様に、複数行のデータをクエリすることもできます。以下は、複数行のデータをクエリするためのサンプル コードです:

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

type User struct {
    Id       int
    Name     string
    Age      int
}

func main() {
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name?charset=utf8")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

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

    var users []User
    for rows.Next() {
        var user User
        err := rows.Scan(&user.Id, &user.Name, &user.Age)
        if err != nil {
            panic(err.Error())
        }
        users = append(users, user)
    }

    fmt.Println(users)
}
ログイン後にコピー

このサンプル コードでは、Query() メソッドを使用してデータベース内のユーザー テーブルをクエリし、for ループを通じてすべてのクエリ結果をスキャンします。および Next() メソッド。ループ本体内で User 構造を定義し、Scan() メソッドを通じてデータベース クエリの結果をその構造にマッピングします。最後に、結果をスライスに保存し、スライスを出力します。

4. 概要

上記のサンプル コードを通じて、Golang でのデータベース クエリに database/sql パッケージを使用するのが非常に便利で効率的であることがわかります。データベースを柔軟に運用し、さまざまなデータクエリニーズに対応します。このことから、Golang は Web 開発において非常に優れたパフォーマンスを発揮します。もちろん、より良いエクスペリエンスを得るために、ORM フレームワークを使用してデータベースを操作することも選択できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート