ホームページ > バックエンド開発 > Golang > Go 言語入門: データベース接続の基本概念

Go 言語入門: データベース接続の基本概念

WBOY
リリース: 2024-01-23 08:17:14
オリジナル
1303 人が閲覧しました

Go 言語入門: データベース接続の基本概念

Go 言語の学習: データベースへの接続に関する基本的な知識、具体的なコード例が必要です

Go语言是一种开源的编程语言,其简洁、高效的特性让越来越多的开发者喜爱和使用。在开发过程中,经常需要与数据库建立连接,进行数据的读取、写入、更新和删除等操作。因此,学会如何在Go语言中连接数据库是非常重要的技能。
ログイン後にコピー
  1. データベース ドライバー
    Go 言語では、 connect データベースにはデータベース ドライバーの使用が必要です。現在、Go 言語の主なデータベース ドライバーは次のとおりです。

    • database/sql: Go 言語の標準パッケージで提供されるデータベース ドライバー インターフェイスであり、MySQL などのさまざまなデータベースをサポートします。 、PostgreSQL、SQLite など。
    • go-sqlite3: SQLite データベースのドライバーであり、SQLite データベースに接続して操作するために使用されます。
    • pq: PostgreSQL データベースのドライバーであり、PostgreSQL データベースの接続と操作に使用されます。
    • go-mysql-driver: MySQL データベースに接続して操作するために使用される、MySQL データベース用のドライバーです。

    この記事では、MySQL データベースを例に挙げて説明します。

  2. データベース ドライバーのインストール
    go-mysql-driver を使用して MySQL データベースに接続する前に、まずドライバーをインストールする必要があります。次のコマンドを使用してインストールできます。

    go get github.com/go-sql-driver/mysql
    ログイン後にコピー

    インストールが完了したら、Go プログラムにパッケージをインポートし、その中の関数と構造を使用できます。

  3. データベースへの接続
    Go 言語で MySQL データベースに接続する手順は次のとおりです。

    • データベース ドライバー パッケージをインポートする: コード内で を使用します。 import キーワードは、「go-sql-driver/mysql」パッケージをインポートします。
    • sql.Open() 関数を使用してデータベース接続を開きます。この関数のパラメータは、データベースのドライバー名と接続文字列です。たとえば、sql.Open("mysql", "ユーザー名: パスワード@tcp(localhost:3306)/データベース名") となります。
    • データベース接続の Ping() メソッドを呼び出して、接続が成功したかどうか、つまりデータベースに正常に接続できるかどうかを確認します。

    以下はサンプル コードです:

    package main
    
    import (
        "database/sql"
        "fmt"
    
        _ "github.com/go-sql-driver/mysql"
    )
    
    func main() {
        // 打开数据库连接
        db, err := sql.Open("mysql", "用户名:密码@tcp(localhost:3306)/数据库名称")
        if err != nil {
            fmt.Println("数据库连接失败:", err)
            return
        }
        defer db.Close()
    
        // 测试连接
        err = db.Ping()
        if err != nil {
            fmt.Println("连接失败:", err)
            return
        }
    
        fmt.Println("连接成功!")
    }
    ログイン後にコピー
  4. クエリ データ
    接続が成功すると、データベース操作を実行できます。以下は、データをクエリするためのサンプル コードです。

    rows, err := db.Query("SELECT * FROM table_name")
    if err != nil {
        fmt.Println("查询失败:", err)
        return
    }
    defer rows.Close()
    
    for rows.Next() {
        var id int
        var name string
        err := rows.Scan(&id, &name)
        if err != nil {
            fmt.Println("扫描行失败:", err)
            return
        }
        fmt.Println("ID:", id, "Name:", name)
    }
    
    if err = rows.Err(); err != nil {
        fmt.Println("遍历结果集失败:", err)
        return
    }
    ログイン後にコピー

    上記のコードは、db.Query() メソッドを通じてデータベース内のデータをクエリし、rows.Next を使用します。 () クエリ結果をループします。ループ内では、rows.Scan() メソッドを通じて行データがスキャンされ、結果が変数に格納されます。

  5. データの挿入
    データのクエリに加えて、Go 言語は db.Exec() メソッドを通じてデータベースにデータを挿入することもできます。データを挿入するためのサンプル コードを次に示します。

    result, err := db.Exec("INSERT INTO table_name (name) VALUES (?)", "John")
    if err != nil {
        fmt.Println("插入数据失败:", err)
        return
    }
    
    affectedRows, _ := result.RowsAffected()
    fmt.Println("插入成功,影响的行数为:", affectedRows)
    ログイン後にコピー

    db.Exec() メソッドを通じて SQL 挿入ステートメントを実行します。ここで、? はパラメータ プレースホルダを表します。 「John」などの特定の値に置き換えて使用できます。

  6. データの更新と削除
    Go 言語では、db.Exec() メソッドを使用してデータベース内のデータを更新および削除できます。データを更新するサンプル コードを次に示します。

    result, err := db.Exec("UPDATE table_name SET name = ? WHERE id = ?", "Tom", 1)
    if err != nil {
        fmt.Println("更新数据失败:", err)
        return
    }
    
    affectedRows, _ := result.RowsAffected()
    fmt.Println("更新成功,影响的行数为:", affectedRows)
    ログイン後にコピー

    db.Exec() メソッドを通じて SQL 更新ステートメントを実行します。ここで、? はパラメータ プレースホルダを表します。特定の値に置き換えて使用できます。

    同様に、db.Exec() メソッドを使用して SQL 削除ステートメントを実行できます。例:

    result, err := db.Exec("DELETE FROM table_name WHERE id = ?", 1)
    ログイン後にコピー

    上記のコードは table_name## を削除します。 #テーブル内のidは1データです。

    この記事の導入部を通じて、読者は Go 言語でデータベースに接続するための基本的な知識をほぼ理解できたと思います。データベース操作は実際の開発においてよく使われるスキルですが、この記事の内容が読者の皆様のお役に立てれば幸いであり、実際のプロジェクトに適用していただければ幸いです。

    以上がGo 言語入門: データベース接続の基本概念の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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