1.安装go语言的mysql驱动
go get -u -v github.com/go-sql-driver/mysql
2.go操作MySQL数据库
2.1导入包
import _ "github.com/go-sql-driver/mysql"//程序在操作数据库的时候只需要用到database/sql,而不需要直接使用数据库驱动,所以程序在导入数据库驱动的时候将这个包的名字设置成下划线。
2.2连接数据库
conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/test?charset=utf8")
defer conn.Close()//随手关闭数据库是个好习惯
2.3执行数据库操作
1) Query 执行数据库的查询操作,例如一个Select语句,返回数据类型为*Rows
2) QueryRow 执行数据库至多返回一条数据,返回数据类型为*Row
3) Exec 执行数不返回任何rows的据库语句,例如delete操作
4)PrePare 准备一个数据库query操作,返回一个*Stmt,用于后续query或Exec。这个Stmt可以被多次执行,或者并发执行
//
package main
import(
_ "github.com/go-sql-driver/mysql"
"database/sql"
)
func main(){
db,err := sql.Open("mysql","root:123456@tcp(192.168.160.143:3306)/yzdb")
if err!=nil{
panic(err)
}
defer db.Close()
//建表语句
sqlStr:=`create table if not exists teacher(id int,name varchar(24));`
db.Exec(sqlStr)
//插入数据
sqlStr = `insert into teacher(id,name) values("1","lili"),("2","lilei");`
db.Exec(sqlStr)
//预处理 方式
sqlStr = `insert into teacher(id,name) values(?,?);`
stmt,err := db.Prepare(sqlStr)
if err!=nil{
panic(err)
}
data := [][]string{{"3","yz"},{"4","yzzq"},{"5","ly"}}
for _,v := range data {
stmt.Exec(v[0],v[1])
}
//查询语句
sqlQuery := `select id,name from teacher;`
result := db.QueryRow(sqlQuery)
var id,name string
result.Scan(&id,&name)
sqlQuery = `select * from teacher;`
rows,_:=db.Query(sqlQuery)
results := []string{}
for rows.Next() {
rows.Scan(&id,&name)
results = append(results,id,name)
}
//fmt.Println(results)
//预处理
sqlQuery = "select * from teacher where id = ?;"
stmt,err = db.Prepare(sqlQuery)
if err!=nil {
panic(err)
}
ro,err := stmt.Query("3")
for ro.Next(){
ro.Scan(&id,&name)
}
}