Go语言学习之操作MYSQL实现CRUD
本文主要讲解如何使用Go语言操作MYSQL数据库实现CRUD(增加、查询、修改、删除)操作。
准备工作
在开始之前,需要先安装好Go语言开发环境以及MYSQL数据库,并且在Go语言项目中导入github.com/go-sql-driver/mysql驱动。
建立连接
使用Go语言连接MYSQL数据库需要用到database/sql包。下面是连接代码:
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:password@tcp(host:port)/database")
if err != nil {
fmt.Println(err)
}
defer db.Close()
}
其中,mysql为驱动名称,user为连接MYSQL数据库的用户名,password为连接MYSQL数据库的密码,host为MYSQL数据库的主机名,port为MYSQL数据库的端口号,database为MYSQL数据库名称。
增加数据
使用Go语言往MYSQL数据库中插入数据需要用到Exec函数。下面是增加数据代码:
func insertData(name string, age int) {
sql := "INSERT INTO student(name,age) VALUES(?,?)"
stm, err := db.Prepare(sql)
if err != nil {
fmt.Println(err)
return
}
defer stm.Close()
res, err := stm.Exec(name, age)
if err != nil {
fmt.Println(err)
return
}
rowsAffected, _ := res.RowsAffected()
fmt.Printf("插入成功,影响行数:%d", rowsAffected)
}
其中,student为表名,name和age为列名,?为参数占位符,name和age为要插入的参数。
查询数据
使用Go语言从MYSQL数据库中查询数据需要用到Query函数。下面是查询数据代码:
func queryData() {
sql := "SELECT * FROM student"
rows, err := db.Query(sql)
if err != nil {
fmt.Println(err)
return
}
defer rows.Close()
for rows.Next() {
var id int
var name string
var age int
err := rows.Scan(&id, &name, &age)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("id=%d, name=%s, age=%d\n", id, name, age)
}
}
其中,SELECT * FROM student为要查询的SQL语句,id、name和age为表中的列名,rows.Scan函数可以将查询结果扫描到变量中。
修改数据
使用Go语言修改MYSQL数据库中的数据需要用到Exec函数。下面是修改数据代码:
func updateData(name string, age int) {
sql := "UPDATE student SET age=? WHERE name=?"
stm, err := db.Prepare(sql)
if err != nil {
fmt.Println(err)
return
}
defer stm.Close()
res, err := stm.Exec(age, name)
if err != nil {
fmt.Println(err)
return
}
rowsAffected, _ := res.RowsAffected()
fmt.Printf("更新成功,影响行数:%d", rowsAffected)
}
其中,UPDATE student SET age=? WHERE name=?为要执行的SQL语句,?为参数占位符。
删除数据
使用Go语言从MYSQL数据库中删除数据需要用到Exec函数。下面是删除数据代码:
func deleteData(name string) {
sql := "DELETE FROM student WHERE name = ?"
stm, err := db.Prepare(sql)
if err != nil {
fmt.Println(err)
return
}
defer stm.Close()
res, err := stm.Exec(name)
if err != nil {
fmt.Println(err)
return
}
rowsAffected, _ := res.RowsAffected()
fmt.Printf("删除成功,影响行数:%d", rowsAffected)
}
其中,DELETE FROM student WHERE name=?为要执行的SQL语句,?为参数占位符。
示例说明
下面是一个完整的示例,演示了如何使用Go语言操作MYSQL数据库实现增加、查询、修改和删除数据:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
var db *sql.DB
func init() {
connStr := "user:password@tcp(host:port)/database"
var err error
db, err = sql.Open("mysql", connStr)
if err != nil {
fmt.Println(err)
}
}
func insertData(name string, age int) {
sql := "INSERT INTO student(name,age) VALUES(?,?)"
stm, err := db.Prepare(sql)
if err != nil {
fmt.Println(err)
return
}
defer stm.Close()
res, err := stm.Exec(name, age)
if err != nil {
fmt.Println(err)
return
}
rowsAffected, _ := res.RowsAffected()
fmt.Printf("插入成功,影响行数:%d", rowsAffected)
}
func queryData() {
sql := "SELECT * FROM student"
rows, err := db.Query(sql)
if err != nil {
fmt.Println(err)
return
}
defer rows.Close()
for rows.Next() {
var id int
var name string
var age int
err := rows.Scan(&id, &name, &age)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("id=%d, name=%s, age=%d\n", id, name, age)
}
}
func updateData(name string, age int) {
sql := "UPDATE student SET age=? WHERE name=?"
stm, err := db.Prepare(sql)
if err != nil {
fmt.Println(err)
return
}
defer stm.Close()
res, err := stm.Exec(age, name)
if err != nil {
fmt.Println(err)
return
}
rowsAffected, _ := res.RowsAffected()
fmt.Printf("更新成功,影响行数:%d", rowsAffected)
}
func deleteData(name string) {
sql := "DELETE FROM student WHERE name = ?"
stm, err := db.Prepare(sql)
if err != nil {
fmt.Println(err)
return
}
defer stm.Close()
res, err := stm.Exec(name)
if err != nil {
fmt.Println(err)
return
}
rowsAffected, _ := res.RowsAffected()
fmt.Printf("删除成功,影响行数:%d", rowsAffected)
}
func main() {
insertData("Tom", 18)
insertData("Jack", 19)
insertData("David", 20)
queryData()
updateData("Tom", 20)
queryData()
deleteData("David")
queryData()
}
运行该示例可以看到从MYSQL数据库中插入、查询、修改和删除数据的结果。
总结
本文主要讲解了如何使用Go语言操作MYSQL数据库实现CRUD(增加、查询、修改、删除)操作。首先需要建立连接,然后分别用到Exec和Query函数实现增加、查询、修改和删除数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go语言学习之操作MYSQL实现CRUD - Python技术站