ZBLOG

go +mysql 实现增删改查,代码实例

以下是一个示例代码,演示如何使用Go语言连接MySQL数据库并进行增删改查操作:

package main

import (
	"database/sql"
	"fmt"

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

type User struct {
	ID   int
	Name string
	Age  int
}

func main() {
	db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/mydatabase")
	if err != nil {
		fmt.Println("数据库连接失败:", err)
		return
	}
	defer db.Close()

	err = db.Ping()
	if err != nil {
		fmt.Println("无法连接到数据库:", err)
		return
	}

	fmt.Println("成功连接到数据库!")

	createTable(db)

	user1 := User{
		ID:   1,
		Name: "Alice",
		Age:  25,
	}
	insertUser(db, user1)

	user2 := User{
		ID:   2,
		Name: "Bob",
		Age:  30,
	}
	insertUser(db, user2)

	users := getUsers(db)
	fmt.Println("查询所有用户:")
	for _, user := range users {
        fmt.Printf("ID:%d, 姓名:%s, 年龄:%d\n", user.ID, user.Name, user.Age)
    }

    updateUser(db, User{ID: 1, Name: "Alice Updated", Age: 26})

    deleteUser(db, 2)

    users = getUsers(db)
	fmt.Println("查询所有用户:")
	for _, user := range users {
        fmt.Printf("ID:%d, 姓名:%s, 年龄:%d\n", user.ID, user.Name, user.Age)
    }
}

func createTable(db *sql.DB) {
	stmt, err := db.Prepare("CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), age INT)")
	if err != nil {
		fmt.Println("创建表失败:", err)
		return
	}

	_, err = stmt.Exec()
	if err != nil {
		fmt.Println("执行创建表语句失败:", err)
		return
	}

	fmt.Println("成功创建表!")
}

func insertUser(db *sql.DB, user User) {
	stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES (?, ?)")
	if err != nil {
		fmt.Println("插入数据失败:", err)
		return
	}
	defer stmt.Close()

	result, err := stmt.Exec(user.Name, user.Age)
	if err != nil {
		fmt.Println("执行插入语句失败:", err)
		return
	}

	lastInsertID, _ := result.LastInsertId()
	rowsAffected, _ := result.RowsAffected()
	fmt.Printf("成功插入用户,ID:%d,影响行数:%d\n", lastInsertID, rowsAffected)
}

func getUsers(db *sql.DB) []User {
	rows, err := db.Query("SELECT id, name, age FROM users")
	if err != nil {
		fmt.Println("查询数据失败:", err)
		return nil
	}
	defer rows.Close()

	var users []User

	for rows.Next() {
        var user User
        if err := rows.Scan(&user.ID, &user.Name, &user.Age);err!=nil{
            fmt.Printf("读取数据出错:%s\n",err.Error())
            continue
        }
        users = append(users,user)
    }

    return users
}

func updateUser(db *sql.DB,user User){
    stmt,err:=db.Prepare("UPDATE users SET name=?,age=? WHERE id=?")
    if err != nil {
        fmt.Println("更新数据失败:",err)
        return
    }
    defer stmt.Close()

    result,err:=stmt.Exec(user.Name,user.Age,user.ID)
    if err != nil {
        fmt.Println("执行更新语句失败:",err)
        return
    }

    rowsAffected,_:=result.RowsAffected()
	fmt.Printf("成功更新用户,ID:%d,影响行数:%d\n", user.ID, rowsAffected)
}

func deleteUser(db *sql.DB,id int){
	stmt,err:=db.Prepare("DELETE FROM users WHERE id=?")
	if err != nil {
		fmt.Println("删除数据失败:",err)
		return
	}
	defer stmt.Close()

	result,err:=stmt.Exec(id)
	if err != nil {
		fmt.Println("执行删除语句失败:",err)
		return
	}

	rowsAffected,_:=result.RowsAffected()
	fmt.Printf("成功删除用户,ID:%d,影响行数:%d\n", id, rowsAffected)
}

请注意,需要将root:password@tcp(127.0.0.1:3306)/mydatabase中的数据库连接信息替换为你自己的实际连接信息,并确保已经安装了github.com/go-sql-driver/mysql这个库。此示例代码包括创建表、插入数据、查询数据、更新数据和删除数据等操作。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?