Go 编程-mysql数据库操作

一、环境准备

在Go语言中连接MySQL数据库通常使用database/sql包配合一个MySQL驱动,比如github.com/go-sql-driver/mysql
安装github.com/go-sql-driver/mysql
go get github.com/go-sql-driver/mysql

二、连接及增删改查

package main

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

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

//连接数据库使用sql.open(),然后使用ping来测试数据库是否可用
func Connect_mysql () *sql.DB{
	// 数据库连接字符串 (DSN) 格式为: user:password@tcp(host:port)/dbname?charset=utf8mb4
	dsn := "root:root@tcp(127.0.0.1:3306)/go_study?charset=utf8mb4"
	db, err := sql.Open("mysql",dsn)
	if err!=nil {
		log.Println("mysql connect erro: ",err)
		return nil
	}
	if db.Ping()!=nil {
		log.Println("ping err :")
		return nil
	}
	fmt.Println("mysql connect success!")
	return db

}

//查询操作,使用Query,因为查询的数据会返回很多行,所以Query会返回一个sql.Rows的数据集
//为什么不使用Exec?因为exec返回的是一个result,通常是包含改变的位置信息。
func Select_(db *sql.DB) {
	select_sql := "select username,sex from user"
	rows ,er := db.Query(select_sql)
	if er!=nil {
		fmt.Println("查询失败:",er)
	}
	//查询结果的处理主要使用两个函数,rows.Next()遍历每条数据,rows.Scan()将每一条数据的信息输入进参数里面。
	for rows.Next(){
		// var id int
		// var emil string
		var username string
		var sex string
		erro :=rows.Scan(&username,&sex) //一条数据有几个字段就要Scan几个参数进行接收
		if erro !=nil{
			fmt.Println("Rows scan err:",erro)
			break
		}
		fmt.Printf("username:%s sex : %s\n",username,sex)

	}
}
func main() {
	DB :=Connect_mysql()
	defer DB.Close()
	// 查询操作
	

	//插入
	insert_sql := "insert into user (username,sex,email) values(?,?,?)"
	_ , err := DB.Exec(insert_sql,"xrf","girl","110")
	if err !=nil {
		fmt.Println("插入数据失败:",err)
	}

	//查询
		Select_(DB)


	update := "update user set sex=? where username = ?"
	DB.Exec(update,"boy","xrf")
	fmt.Println("更改之后:")
	Select_(DB)

	del:= "delete from user where user_id = ?"
	DB.Exec(del,2)
	fmt.Println("删除:")
	Select_(DB)



}
posted @   云岛夜川川  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示