连接MySQL--Go语言学习笔记

连接MySQL–Go语言学习笔记

首先使用Navicat for MySQL创建一个数据库first,新建一个表:people

import (
	"database/sql"
	"fmt"
	//不要忘记导入驱动
    _ "github.com/go-sql-driver/mysql"
)
func main() {
	//1.打开连接
	db, err := sql.Open("mysql", "root:数据库密码@tcp(localhost:3306)/first")
	db.Ping() //真正的打开数据库连接
	defer func() {
		if db != nil {
			db.Close()
		}
	}()
	if err != nil {
		fmt.Println("数据库连接失败!")
	}
	//预处理SQL
	//?表示占位符
	stmt, err := db.Prepare("insert into people values(default,?,?)")
	defer func(){
		if stmt!=nil{
			stmt.Close()
		}
	}()
	if err != nil {
		fmt.Println("预处理失败!")
		return
	}
	//参数和占位符对应
	r, err := stmt.Exec("孙悟空", "花果山")
	if err != nil {
		fmt.Println("sql执行失败!")
		return
	}
	//获取结果
	count,err:=r.RowsAffected()
	if err!=nil{
		fmt.Println("结果获取失败!")
		return
	}
	if count>0{
		fmt.Println("新增成功")
	}else{
		fmt.Println("新增失败")
	}
	//关闭
   //可能需要获取到新增时的主键得值
    id,_:=r.LastInsertId()
    fmt.Println(id)
}
修改数据库内容

import (
	"database/sql"
	"fmt"
	//不要忘记导入驱动
    _ "github.com/go-sql-driver/mysql"
)
func main() {
	//1.打开连接
	db, err := sql.Open("mysql", "root:197820@tcp(localhost:3306)/first")
	db.Ping() //真正的打开数据库连接
	defer func() {
		if db != nil {
			db.Close()
		}
	}()
	if err != nil {
		fmt.Println("数据库连接失败!")
	}
	//预处理SQL
	//?表示占位符
	stmt, err := db.Prepare("update  people set name=?,address=? where id=?")
	defer func(){
		if stmt!=nil{
			stmt.Close()
		}
	}()
	//参数和占位符对应
	r, _ := stmt.Exec("孙悟空", "花果山",3)
	count,_:= r.RowsAffected()
	if count>0{
		fmt.Println("修改成功")
	}else{
		fmt.Println("修改失败")
	}
	//如果修改时前后内容相同认为修改失败

}
删除

import (
	"database/sql"
	"fmt"
	//不要忘记导入驱动
    _ "github.com/go-sql-driver/mysql"
)
func main() {
	//1.打开连接
	db, err := sql.Open("mysql", "root:197820@tcp(localhost:3306)/first")
	db.Ping() //真正的打开数据库连接
	defer func() {
		if db != nil {
			db.Close()
		}
	}()
	if err != nil {
		fmt.Println("数据库连接失败!")
		return
	}
	//预处理SQL
	//?表示占位符
	stmt, err := db.Prepare("delete from people  where id=?")
	if err!=nil{
		fmt.Println("预处理出错")
		return
	}
	defer func(){
		if stmt!=nil{
			stmt.Close()
		}
	}()
	//参数和占位符对应
	r, err:= stmt.Exec(3)
	if err!=nil{
		fmt.Println("执行失败")
	}
	count,_:= r.RowsAffected()
	if count>0{
		fmt.Println("修改成功")
	}else{
		fmt.Println("修改失败")
	}
	//如果修改时前后内容相同认为修改失败

}
查询

import (
	"database/sql"
	"fmt"
	//不要忘记导入驱动
    _ "github.com/go-sql-driver/mysql"
)
func main() {
	//1.打开连接
	db, err := sql.Open("mysql", "root:197820@tcp(localhost:3306)/first")
	db.Ping() //真正的打开数据库连接
	defer func() {
		if db != nil {
			db.Close()
		}
	}()
	if err != nil {
		fmt.Println("数据库连接失败!")
		return
	}
	//预处理SQL
	//?表示占位符
	stmt, err := db.Prepare("select * from people")
	if err!=nil{
		fmt.Println("预处理出错",err)
		return
	}
	defer func(){
		if stmt!=nil{
			stmt.Close()
			fmt.Println("stmt关闭")
		}
	}()
	//参数和占位符对应
	rows, err:= stmt.Query()
	if err!=nil{
		fmt.Println("查询失败",err)
	}
	//循环遍历结果
	for rows.Next(){
		var id int
		var name,address string
		rows.Scan(&id,&name,address)
		fmt.Println(id,name,address)
	}
	defer func() {
		if rows!=nil{
			rows.Close()
			fmt.Println("关闭结果集")
		}
	}()
	//如果修改时前后内容相同认为修改失败

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值