GoLang之MySQL基本操作

1.数据库字段结构

mysql表字段如下图所示:

2.GoLang代码

package db

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

type DBConnect struct {
	DBUrl string
	DB *sql.DB
	student student
}

type student struct {
	id int
	name string
	gender string
	age int
	position string
}

func Start()  {
	db := DBConnect{
		DBUrl:"root:TI1mo1j2qq6.@(127.0.0.1:3306)/student?charset=utf8mb4",
	}
	var err error
	db.DB, err = sql.Open("mysql", db.DBUrl)
	if err != nil {
		fmt.Printf("sql connect error : %s", err)
		return
	}
	fmt.Println(db.DBUrl)
	fmt.Println(db.DB.Stats())
	db.queryStudent()
	newStudent := &student{
		id:10003,
		name:"赵小海",
		gender:"男",
		age:22,
		position:"无",
	}
	db.insertStudent(newStudent)
	db.deleteStudent(10001)
	updateStudent := &student{
		id:10002,
		name:"刘小红",
		gender:"女",
		age:18,
		position:"团支书",
	}
	db.updateStudent(updateStudent)
}

func (db *DBConnect) queryStudent() {
	// pre用法
	//sqlPre, _ := db.DB.Prepare("select * from student where age > ? and age < ?")
	//students, err := sqlPre.Query(18, 22)
	students, err := db.DB.Query("select * from class1")
	if err != nil{
		fmt.Printf("sql query error : %s", err)
	}
	defer students.Close()
	for i:= 0; students.Next(); i ++ {
		students.Scan(&db.student.id, &db.student.name, &db.student.gender, &db.student.age, &db.student.position,)
		fmt.Println("id:",db.student.id, "name:", db.student.name, "gender:", db.student.gender, "age", db.student.age, "position:", db.student.position)
	}
}

func (db *DBConnect) insertStudent(student *student)  {
	insertStu, _ := db.DB.Prepare("insert into class1 values(?,?,?,?,?)")
	defer insertStu.Close()
	result, err := insertStu.Exec(&student.id, &student.name, &student.gender, &student.age, &student.position)
	if err != nil {
		fmt.Printf("sql insert error : %s", err)
		return
	}
	rowNum, _ := result.RowsAffected()
	fmt.Printf("影响行数:%d\n", rowNum)
}

func (db *DBConnect) deleteStudent(id int){
	deleteStu, _ := db.DB.Prepare("delete from class1 where id = ?")
	defer deleteStu.Close()
	result, err := deleteStu.Exec(id)
	if err != nil {
		fmt.Printf("sql delete error : %s", err)
	}
	rowNum, _ := result.RowsAffected()
	fmt.Printf("影响行数:%d\n", rowNum)
}

func (db *DBConnect) updateStudent(newstudent *student)  {
	updateStu, _ := db.DB.Prepare("update class1 set name = ?, gender = ?, age = ?, position = ? where id = ?")
	defer updateStu.Close()
	result, err := updateStu.Exec(&newstudent.name, &newstudent.gender, &newstudent.age, &newstudent.position, &newstudent.id)
	if err != nil {
		fmt.Printf("sql insert error : %s", err)
		return
	}
	rowNum, _ := result.RowsAffected()
	fmt.Printf("影响行数:%d\n", rowNum)
}

3.运行效果

运行效果图如下所示:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级战斗王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值