Golang的MySQL预处理
预处理执行过程
1.编译器将SQL语句分为两部分,命令部分与数据部分;
2.编译器把命令发送给MySQL服务端,MySQL服务端进行MySQL预处理;
3.编译器将数据发送给MySQL服务端,并进行占位符的替换。
为什么进行预处理
预处理避免了MySQL服务端的SQL语句重复执行的问题,提升服务器性能,同时,令编译器提前预处理节省后续编译成本,避免了SQL注入问题。
Golang中的MySQL预处理
//预处理查询实例
func prepareQuery() {
stmt,err := db.Prepare("select id,name,email from `user` where id > ?")
if err != nil {
fmt.Println("预处理失败,err:",err)
}
defer stmt.Close()
rows,err := stmt.Query(0)
if err != nil {
fmt.Println("查询失败",err)
}
defer rows.Close()
//循环读取数据
for rows.Next() {
err := rows.Scan(&u.Id,&u.Name,&u.Email)
if err != nil {
fmt.Println("扫描失败",err)
return
}
fmt.Printf("id:%d name:%s email:%s \n",u.Id,u.Name,u.Email)
}
}
插入,删除,更新大家可以自己尝试一下