ZBLOG

golang mysql

Golang 与 MySQL 交互指南

在 Go 语言中与 MySQL 数据库交互是后端开发的常见需求。以下是使用 Go 操作 MySQL 的全面指南:

1. 安装驱动

首先需要安装 MySQL 驱动:

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

2. 基本连接

package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/go-sql-driver/mysql"
)

func main() {
	// 连接字符串格式: "用户名:密码@tcp(地址:端口)/数据库名?参数"
	db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/testdb?charset=utf8mb4&parseTime=True")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	// 验证连接
	err = db.Ping()
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("Connected to MySQL!")
}

3. CRUD 操作

查询数据

type User struct {
	ID    int
	Name  string
	Email string
}

func queryUsers(db *sql.DB) ([]User, error) {
	var users []User
	
	rows, err := db.Query("SELECT id, name, email FROM users")
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	
	for rows.Next() {
		var u User
		err := rows.Scan(&u.ID, &u.Name, &u.Email)
		if err != nil {
			return nil, err
		}
		users = append(users, u)
	}
	
	return users, nil
}

插入数据

func insertUser(db *sql.DB, user User) (int64, error) {
	result, err := db.Exec(
		"INSERT INTO users (name, email) VALUES (?, ?)",
		 user.Name,
		 user.Email,
    )
	if err != nil {
        return  0 ,err 
    }
    
	id ,err := result.LastInsertId()
	return id ,err 
} 

ORM框架推荐(GORM)

对于更复杂的应用,可以使用 GORM:

go get -u gorm.io/gorm 
go get -u gorm.io/driver/mysql 

示例代码:

package main 

import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

type Product struct { 
	gorm.Model 
	Name   string  
    Price uint  
}  

func main() {  
    dsn := "user:pass@tcp(127 .0 .0 .1 :3306 )/dbname ?charset=utf8mb4&parseTime=True&loc=Local"  
	db,_:= gorm.Open(mysql.Open(dsn ),&gorm.Config{})  

//自动迁移模式(创建表)  
	db.AutoMigrate(&Product{})  

//创建记录  
	p:= Product{Name:"iPhone",Price :999 }  
	db.Create(&p )  

//查询记录  
	var product Product  
	db.First(&product,"id=?",1 )  

//更新记录  
	db.Model(&product ).Update("Price",899 )  

//删除记录(软删除)   
	db.Delete(&product )   
}   

希望这些信息对您有所帮助!如需更详细的内容,可以参考零声教育的相关课程。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23888

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?