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:[email protected](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:[email protected](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()
}
}()
}