欢迎光临
我们一直在努力

go语言学习例子No.7–连接mysql

https://github.com/go-sql-driver/mysql#installation

电脑安装git

https://github.com/go-sql-driver/mysql#installation

然后导入到src里

在新建first数据库,插入表

create table people(
  id int primary key auto_increment,
  name varchar(20),
  address varchar(20)
)
#查看表
select * from people

1.新增,修改,删除

package main

import (
	"database/sql"
	"fmt"

	//要导入驱动
	_ "github.com/go-sql-driver/mysql"
)

func main() {
	//打开链接
	db, err := sql.Open("mysql", "root:123456@tcp(192.168.101.20:3306)/first")
	db.Ping()
	defer func() { //关闭连接
		if db != nil {
			db.Close()
		}
	}()
	if err != nil {
		fmt.Println("打开数据库失败")
		return
	}
	//预处理SQL,支持占位符,防止SQL注入
	//这个是新增
	// stmt, err := db.Prepare("insert into people values(default,?,?)")
	//这个是修改
	// stmt, err := db.Prepare("update people set name=?,address=? where id=?")
	//这个是删除
	stmt, err := db.Prepare("delete from people where id=?")
	defer func() { //关闭预处理
		if stmt != nil {
			stmt.Close()
		}
	}()
	if err != nil {
		fmt.Println("预处理失败")
		return
	}
	//Exec() 参数为不定项参数,对应占位符?个数
	//新增
	//r, err := stmt.Exec("里斯", "我淀")
	//如果修改前和修改后的值相同,RowsAffected()返回0
	//r, err := stmt.Exec("小孩", "北京",1)
	//如果删除失败返回0,删除成功RowsAffected()返回删除的个数
	r, err := stmt.Exec(1)
	//获取结果
	count, err := r.RowsAffected()
	if err != nil {
		fmt.Println("结果获取失败")
		return
	}
	//获取最后新增的ID
	//id, _ := r.LastInsertId()
	if count > 0 {
		//fmt.Println("新增成功id:", id)
		//fmt.Println("修改成功")
		fmt.Println("删除成功")
	} else {
		fmt.Println("失败")
	}

}

2.查询有点不一样

package main

import (
	"database/sql"
	"fmt"

	//要导入驱动
	_ "github.com/go-sql-driver/mysql"
)

func main() {
	//打开链接
	db, err := sql.Open("mysql", "root:123456@tcp(192.168.101.20:3306)/first")
	db.Ping()
	defer func() { //关闭连接
		if db != nil {
			db.Close()
		}
	}()
	if err != nil {
		fmt.Println("打开数据库失败")
		return
	}
	//这个是查询
	stmt, err := db.Prepare("select * from people")
	defer func() { //关闭预处理
		if stmt != nil {
			stmt.Close()
		}
	}()
	if err != nil {
		fmt.Println("预处理失败")
		return
	}
	//查询
	r, err := stmt.Query()
	if err != nil {
		fmt.Println("结果获取失败")
		return
	}
	for r.Next() {
		var id int
		var name, address string
		//把行内值付给变量
		r.Scan(&id, &name, &address)
		fmt.Println(id, name, address)
	}
	defer func() {
		if r != nil {
			r.Close()
		}
	}()

}
 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:家里蹲的狐狸 » go语言学习例子No.7–连接mysql

分享到: 生成海报
avatar

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活