连接MySQL–Go语言学习笔记
首先使用Navicat for MySQL创建一个数据库first,新建一个表:people
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:数据库密码@tcp(localhost:3306)/first")
db.Ping()
defer func() {
if db != nil {
db.Close()
}
}()
if err != nil {
fmt.Println("数据库连接失败!")
}
stmt, err := db.Prepare("insert into people values(default,?,?)")
defer func(){
if stmt!=nil{
stmt.Close()
}
}()
if err != nil {
fmt.Println("预处理失败!")
return
}
r, err := stmt.Exec("孙悟空", "花果山")
if err != nil {
fmt.Println("sql执行失败!")
return
}
count,err:=r.RowsAffected()
if err!=nil{
fmt.Println("结果获取失败!")
return
}
if count>0{
fmt.Println("新增成功")
}else{
fmt.Println("新增失败")
}
id,_:=r.LastInsertId()
fmt.Println(id)
}
修改数据库内容
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:197820@tcp(localhost:3306)/first")
db.Ping()
defer func() {
if db != nil {
db.Close()
}
}()
if err != nil {
fmt.Println("数据库连接失败!")
}
stmt, err := db.Prepare("update people set name=?,address=? where id=?")
defer func(){
if stmt!=nil{
stmt.Close()
}
}()
r, _ := stmt.Exec("孙悟空", "花果山",3)
count,_:= r.RowsAffected()
if count>0{
fmt.Println("修改成功")
}else{
fmt.Println("修改失败")
}
}
删除
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:197820@tcp(localhost:3306)/first")
db.Ping()
defer func() {
if db != nil {
db.Close()
}
}()
if err != nil {
fmt.Println("数据库连接失败!")
return
}
stmt, err := db.Prepare("delete from people where id=?")
if err!=nil{
fmt.Println("预处理出错")
return
}
defer func(){
if stmt!=nil{
stmt.Close()
}
}()
r, err:= stmt.Exec(3)
if err!=nil{
fmt.Println("执行失败")
}
count,_:= r.RowsAffected()
if count>0{
fmt.Println("修改成功")
}else{
fmt.Println("修改失败")
}
}
查询
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:197820@tcp(localhost:3306)/first")
db.Ping()
defer func() {
if db != nil {
db.Close()
}
}()
if err != nil {
fmt.Println("数据库连接失败!")
return
}
stmt, err := db.Prepare("select * from people")
if err!=nil{
fmt.Println("预处理出错",err)
return
}
defer func(){
if stmt!=nil{
stmt.Close()
fmt.Println("stmt关闭")
}
}()
rows, err:= stmt.Query()
if err!=nil{
fmt.Println("查询失败",err)
}
for rows.Next(){
var id int
var name,address string
rows.Scan(&id,&name,address)
fmt.Println(id,name,address)
}
defer func() {
if rows!=nil{
rows.Close()
fmt.Println("关闭结果集")
}
}()
}