golang读取数据库
- 安装数据库驱动
Go语言的数据库驱动有很多,例如mysql、postgres、sqlite等等。这里以mysql为例进行说明。
安装mysql驱动:
go get github.com/go-sql-driver/mysql
- 连接数据库
连接数据库需要用到数据库驱动提供的api,mysql驱动提供的是sql.Open方法,使用方法如下:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接数据库
db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test_db")
if err != nil {
panic(err)
}
defer db.Close()
}
其中,mysql表示使用mysql驱动,root:password表示用户名和密码,localhost:3306表示数据库地址和端口号,test_db表示数据库名。
- 查询数据
连接数据库之后,就可以查询数据了。查询数据需要使用Query方法,使用方法如下:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test_db")
if err != nil {
panic(err)
}
defer db.Close()
// 查询数据
rows, err := db.Query("SELECT id, name, age FROM user")
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var id int
var name string
var age int
err = rows.Scan(&id, &name, &age)
if err != nil {
panic(err)
}
fmt.Println(id, name, age)
}
}
其中,SELECT id, name, age FROM user表示查询user表中的id、name、age三个字段。
- 插入数据
插入数据需要使用Exec方法,使用方法如下:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test_db")
if err != nil {
panic(err)
}
defer db.Close()
// 插入数据
result, err := db.Exec("INSERT INTO user(name, age) VALUES (?, ?)", "Tom", 20)
if err != nil {
panic(err)
}
fmt.Println(result.LastInsertId())
}
其中,INSERT INTO user(name, age) VALUES (?, ?)表示插入一条name为Tom,age为20的数据。?是占位符,可以避免sql注入攻击。
- 更新数据
更新数据需要使用Exec方法,使用方法如下:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test_db")
if err != nil {
panic(err)
}
defer db.Close()
// 更新数据
result, err := db.Exec("UPDATE user SET age = ? WHERE name = ?", 21, "Tom")
if err != nil {
panic(err)
}
fmt.Println(result.RowsAffected())
}
其中,UPDATE user SET age = ? WHERE name = ?表示更新name为Tom的数据的age为21。
- 删除数据
删除数据需要使用Exec方法,使用方法如下:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test_db")
if err != nil {
panic(err)
}
defer db.Close()
// 删除数据
result, err := db.Exec("DELETE FROM user WHERE name = ?", "Tom")
if err != nil {
panic(err)
}
fmt.Println(result.RowsAffected())
}
其中,DELETE FROM user WHERE name = ?表示删除name为Tom的数据。
原文地址: https://www.cveoy.top/t/topic/ppS 著作权归作者所有。请勿转载和采集!