>  기사  >  데이터 베이스  >  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 데이터베이스에 성공적으로 연결하고 " 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제