Golang变量处理指南
Golang变量处理指南 如何将变量写入 MySQL 数据库?
2 回复
更多关于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,
// },
// )
}
关键步骤:
- 导入MySQL驱动:使用
_ "github.com/go-sql-driver/mysql"匿名导入 - 建立数据库连接:
sql.Open("mysql", "连接字符串") - 使用预处理语句:通过
?占位符防止SQL注入 - 执行插入操作:
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
);
注意:实际使用时需要替换连接字符串中的用户名、密码、主机地址和数据库名称。

