Go语言操作MySQL

Go语言安装MySQL数据库驱动步骤
  1. 安装驱动:go get github.com/go-sql-driver/mysql
  2. 检测安装是否成功:sudo find ./ -name "go-sql-driver"
  3. 进入mysql目录。ls -l | wc -l一共32个文件
导入MySQL数据库驱动
import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)
测试连接数据库
  1. 导入驱动
  2. 准备信息,打开连接,返回一个结构体指针*DB。但是这个指针暂时无效
  3. 使用db.Ping()函数成功时,*DB指针可用。
package main

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

func main()  {
	db, err := sql.Open("mysql", "root:123456@tcp(192.168.16.20:3306)/mydb1")
	defer db.Close()
	if err != nil {
		fmt.Println("open err:", err)
		return
	}
	err = db.Ping()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("连接成功!")
}
插入
单行插入
  1. 准备sql语句
  2. result, err := db.Exec()执行sql语句,result本质是interface
  3. result.RowAffected()获取sql语句影响的行数
多行插入
  1. 准备sql语句
  2. result, err := db.Exec()执行sql语句,result本质是interface
  3. result.RowAffected()获取sql语句影响的行数

例如:

sql := "insert into b1 values(103),(104),(105)"
	r, err := db.Exec(sql)
	if err != nil {
		fmt.Println(err)
		return
	}
	n, err := r.RowsAffected()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("insert into ok!", n, "row affected.")
预处理插入
  1. 准备插入数据库的数据
  2. 准备带占位符的sql语句
  3. 预处理stmt, err := db.Prepare(sql)
  4. 传参执行stmt.Exec()
stmt, err := db.Prepare("insert into stu values(?,?)")
	if err != nil {
		fmt.Println("Prepare err:", err)
		return
	}
	for _, s := range str {
		stmt.Exec(s[0], s[1])
	}
查询
单行查询
  1. 准备查询的sql语句
  2. 执行单行sql语句
  3. 按表的字段数,定义变量
  4. 使用Scan()获取变量值
多行查询
  1. 准备查询的sql语句
  2. 执行多行sql语句
  3. 按表的字段数,定义变量
  4. 使用rows.Next()和for搭配,判断游标是否指向一条记录
  5. 使用Scan()获取变量值
sql := "select * from b1 where id>1"
	//查询
	rows, err := db.Query(sql)
	if err != nil {
		fmt.Println(err)
		return
	}

	var id int
	for rows.Next() {
		//接收值
		rows.Scan(&id)
		fmt.Println(id)
	}
预处理查询
  1. 准备带有占位符查询的sql语句
  2. db.Prepare(sql)预处理sql语句得到stmt
  3. 使用stmt.Query()使用预处理调用查询,同时给占位符传参
  4. 使用rows.Next()和for搭配,判断游标是否指向一条记录
  5. 使用Scan()获取变量值
sql := "select * from b1 where id>?;"
	//预处理sql
	stmt, err := db.Prepare(sql)

	//预处理查询
	rows, err := stmt.Query(3)
	if err != nil {
		fmt.Println(err)
		return
	}

	var id int
	for rows.Next() {
		//接收值
		rows.Scan(&id)
		fmt.Println(id)
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值