Maison  >  Article  >  base de données  >  Comment implémenter l'opération MySQL dans Golang

Comment implémenter l'opération MySQL dans Golang

王林
王林avant
2023-05-29 18:34:491155parcourir

Tout d'abord, assurez-vous d'avoir installé Golang et MySQL correctement, et vous devez également installer le pilote MySQL pour Go. Cela peut être facilement fait avec la commande suivante :

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

Avant de créer le programme Go, nous devons également créer une base de données MySQL et une table pour démontrer la méthode d'utilisation de Golang pour les opérations de base de données.

Supposons que nous ayons créé une base de données nommée "test_db" et qu'elle contienne une table nommée "users". La structure du tableau est la suivante :

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;

Ensuite, nous pouvons commencer à écrire des programmes Golang. Ce qui suit est un exemple de programme simple qui montre comment utiliser le pilote Golang pour se connecter à la base de données MySQL et effectuer certaines opérations de requête de base :

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

En exécutant le programme ci-dessus, nous pouvons nous connecter avec succès à la base de données MySQL et effectuer une requête en utilisant le " Instruction SELECT" Tous les enregistrements de la table "utilisateurs" et imprimer les résultats.

En plus des requêtes, nous pouvons également utiliser le pilote Golang pour effectuer d'autres opérations MySQL courantes telles que les insertions, les mises à jour et les suppressions. Ce qui suit est un exemple de programme simple :

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

Avec l'exemple de programme ci-dessus, nous pouvons effectuer avec succès des opérations MySQL courantes telles que l'insertion, la mise à jour et la suppression.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer