ホームページ  >  記事  >  データベース  >  golangでmysql操作を実装する方法

golangでmysql操作を実装する方法

王林
王林転載
2023-05-29 18:34:491155ブラウズ

まず、Golang と MySQL が正しくインストールされていることを確認し、Go の MySQL ドライバーもインストールする必要があります。これは、次のコマンドを使用して簡単に実行できます。

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

Go プログラムを作成する前に、データベース操作に Golang を使用する方法を示すために、MySQL データベースとテーブルを作成する必要もあります。

「test_db」という名前のデータベースを作成し、そこに「users」という名前のテーブルが含まれているとします。テーブルの構造は次のとおりです。

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  `age` smallint(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

次に、Golang プログラムの作成を開始できます。以下は、Golang ドライバーを使用して MySQL データベースに接続し、いくつかの基本的なクエリ操作を実行する方法を示す簡単なプログラムの例です。

package main

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

func main() {
    // 连接 MySQL 数据库
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/test_db?charset=utf8mb4")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    // 执行查询操作
    rows, err := db.Query("SELECT * FROM users")
    if err != nil {
        panic(err.Error())
    }
    defer rows.Close()

    // 遍历查询结果
    for rows.Next() {
        var id int
        var name string
        var email string
        var age int
        err := rows.Scan(&id, &name, &email, &age)
        if err != nil {
            panic(err.Error())
        }
        fmt.Println(id, name, email, age)
    }

    // 检查是否存在错误
    err = rows.Err()
    if err != nil {
        panic(err.Error())
    }
}

上記のプログラムを実行すると、MySQL データベースに正常に接続でき、 use " SELECT" ステートメントは、 "users" テーブル内のすべてのレコードをクエリし、結果を出力します。

クエリに加えて、Golang ドライバーを使用して、挿入、更新、削除などの他の一般的な MySQL 操作を実行することもできます。以下は簡単なプログラム例です:

package main

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

func main() {
    // 连接 MySQL 数据库
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/test_db?charset=utf8mb4")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    // 插入一条记录
    stmt, err := db.Prepare("INSERT INTO users(name, email, age) VALUES(?, ?, ?)")
    if err != nil {
        panic(err.Error())
    }
    defer stmt.Close()

    result, err := stmt.Exec("Tom", "tom@email.com", 30)
    if err != nil {
        panic(err.Error())
    }
    lastInsertId, _ := result.LastInsertId()
    fmt.Println("新增记录的 ID:", lastInsertId)

    // 更新一条记录
    stmt, err = db.Prepare("UPDATE users SET name=?, age=? WHERE id=?")
    if err != nil {
        panic(err.Error())
    }
    defer stmt.Close()

    result, err = stmt.Exec("Jerry", 25, 1)
    if err != nil {
        panic(err.Error())
    }
    affectRow, _ := result.RowsAffected()
    fmt.Println("受影响的行数:", affectRow)

    // 删除一条记录
    stmt, err = db.Prepare("DELETE FROM users WHERE id=?")
    if err != nil {
        panic(err.Error())
    }
    defer stmt.Close()

    result, err = stmt.Exec(1)
    if err != nil {
        panic(err.Error())
    }
    affectRow, _ = result.RowsAffected()
    fmt.Println("受影响的行数:", affectRow)
}

上記のプログラム例では、挿入、更新、削除などの一般的な MySQL 操作を正常に実行できます。

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

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。