Golang变量处理指南

Golang变量处理指南 如何将变量写入 MySQL 数据库?

2 回复

请查看 mysql 模块 的文档,该模块为 sql 模块 提供了一个实现。

更多关于Golang变量处理指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Golang中将变量写入MySQL数据库,通常使用database/sql包配合MySQL驱动。以下是具体实现示例:

package main

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

type User struct {
    ID    int
    Name  string
    Email string
    Age   int
}

func main() {
    // 连接MySQL数据库
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/dbname")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // 测试连接
    err = db.Ping()
    if err != nil {
        log.Fatal(err)
    }

    // 示例1:插入单个变量
    name := "张三"
    email := "zhangsan@example.com"
    age := 25

    result, err := db.Exec(
        "INSERT INTO users (name, email, age) VALUES (?, ?, ?)",
        name, email, age,
    )
    if err != nil {
        log.Fatal(err)
    }

    lastInsertID, _ := result.LastInsertId()
    fmt.Printf("插入成功,ID: %d\n", lastInsertID)

    // 示例2:使用结构体批量插入
    users := []User{
        {Name: "李四", Email: "lisi@example.com", Age: 30},
        {Name: "王五", Email: "wangwu@example.com", Age: 28},
    }

    stmt, err := db.Prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)")
    if err != nil {
        log.Fatal(err)
    }
    defer stmt.Close()

    for _, user := range users {
        _, err = stmt.Exec(user.Name, user.Email, user.Age)
        if err != nil {
            log.Fatal(err)
        }
    }

    // 示例3:使用命名参数(需要第三方库如sqlx)
    // import "github.com/jmoiron/sqlx"
    // dbx := sqlx.NewDb(db, "mysql")
    // _, err = dbx.NamedExec(
    //     "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)",
    //     map[string]interface{}{
    //         "name":  "赵六",
    //         "email": "zhaoliu@example.com",
    //         "age":   35,
    //     },
    // )
}

关键步骤:

  1. 导入MySQL驱动:使用_ "github.com/go-sql-driver/mysql"匿名导入
  2. 建立数据库连接:sql.Open("mysql", "连接字符串")
  3. 使用预处理语句:通过?占位符防止SQL注入
  4. 执行插入操作:db.Exec()或预处理语句的Exec()方法

需要先安装MySQL驱动:

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

数据库表结构示例:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    age INT
);

注意:实际使用时需要替换连接字符串中的用户名、密码、主机地址和数据库名称。

回到顶部