引言:
Go语言的火爆程度越来越高,而数据库的使用也是现代应用程序中不可或缺的一部分。MySQL和MongoDB是最受欢迎的关系型和文档型数据库,同时也是使用Golang进行操作的两个流行的选项。本篇文章将介绍如何在Golang中使用MySQL和MongoDB进行CRUD操作。
1. 操作MySQL数据库
1.1 安装MySQL驱动程序
Go语言中常用的MySQL库是“go-sql-driver/mysql”,可以使用以下命令安装:
```
go get -u github.com/go-sql-driver/mysql
```
1.2 连接MySQL数据库
连接MySQL数据库需要使用“database/sql”和“github.com/go-sql-driver/mysql”中提供的函数。下面是一个连接到MySQL数据库的示例代码:
```
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database")
if err != nil {
panic(err.Error())
}
defer db.Close()
//测试连接是否成功
err = db.Ping()
if err != nil {
panic(err.Error())
}
fmt.Println("Connected to MySQL database!")
}
```
1.3 查询MySQL数据库
查询MySQL数据库需要使用“database/sql”中的函数,例如“Query”,下面是一个查询MySQL数据库中所有“users”表中的用户的示例:
```
rows, err := db.Query("SELECT * FROM users")
if err != nil {
panic(err.Error())
}
defer rows.Close()
for rows.Next() {
var id int
var name string
var email string
var phone string
if err := rows.Scan(&id, &name, &email, &phone); err != nil {
panic(err.Error())
}
fmt.Printf("id=%d, name=%s, email=%s, phone=%s\n", id, name, email, phone)
}
```
1.4 插入MySQL数据库
插入MySQL数据库需要使用“database/sql”中的函数,例如“Exec”,下面是一个将一个新用户插入到MySQL数据库中“users”表的示例:
```
stmt, err := db.Prepare("INSERT INTO users(name, email, phone) VALUES(?,?,?)")
if err != nil {
panic(err.Error())
}
defer stmt.Close()
result, err := stmt.Exec("ZhangSan", "zhangsan@gmail.com", "123456789")
if err != nil {
panic(err.Error())
}
id, err := result.LastInsertId()
if err != nil {
panic(err.Error())
}
fmt.Println("Inserted new user with ID:", id)
```
1.5 更新MySQL数据库
更新MySQL数据库需要使用“database/sql”中的函数,例如“Exec”,下面是一个将一个用户的电话号码更新为新值的示例:
```
stmt, err := db.Prepare("UPDATE users SET phone=? WHERE id=?")
if err != nil {
panic(err.Error())
}
defer stmt.Close()
result, err := stmt.Exec("987654321", 1)
if err != nil {
panic(err.Error())
}
rowsAffected, err := result.RowsAffected()
if err != nil {
panic(err.Error())
}
fmt.Printf("Updated %d rows\n", rowsAffected)
```
1.6 删除MySQL数据库
删除MySQL数据库需要使用“database/sql”中的函数,例如“Exec”,下面是一个删除一个用户的示例:
```
stmt, err := db.Prepare("DELETE FROM users WHERE id=?")
if err != nil {
panic(err.Error())
}
defer stmt.Close()
result, err := stmt.Exec(1)
if err != nil {
panic(err.Error())
}
rowsAffected, err := result.RowsAffected()
if err != nil {
panic(err.Error())
}
fmt.Printf("Deleted %d rows\n", rowsAffected)
```
2. 操作MongoDB数据库
2.1 安装MongoDB驱动程序
Go语言中常用的MongoDB库是“mgo”,可以使用以下命令安装:
```
go get gopkg.in/mgo.v2
```
2.2 连接MongoDB数据库
连接MongoDB数据库需要使用“mgo”中提供的函数。下面是一个连接到MongoDB数据库的示例代码:
```
import (
"fmt"
"gopkg.in/mgo.v2"
)
func main() {
session, err := mgo.Dial("mongodb://localhost")
if err != nil {
panic(err.Error())
}
defer session.Close()
//测试连接是否成功
err = session.Ping()
if err != nil {
panic(err.Error())
}
fmt.Println("Connected to MongoDB database!")
}
```
2.3 查询MongoDB数据库
查询MongoDB数据库需要使用“mgo”中提供的函数。下面是一个查询MongoDB数据库中所有“users”集合中的用户的示例:
```
session, err := mgo.Dial("mongodb://localhost")
if err != nil {
panic(err.Error())
}
defer session.Close()
collection := session.DB("test").C("users")
var results []bson.M
err = collection.Find(nil).All(&results)
if err != nil {
panic(err.Error())
}
for _, result := range results {
fmt.Println(result)
}
```
2.4 插入MongoDB数据库
插入MongoDB数据库需要使用“mgo”中提供的函数。下面是一个将一个新用户插入到MongoDB数据库中“users”集合的示例:
```
session, err := mgo.Dial("mongodb://localhost")
if err != nil {
panic(err.Error())
}
defer session.Close()
collection := session.DB("test").C("users")
err = collection.Insert(&User{"ZhangSan", "zhangsan@gmail.com", "123456789"})
if err != nil {
panic(err.Error())
}
fmt.Println("Inserted new user:", user.Name)
```
2.5 更新MongoDB数据库
更新MongoDB数据库需要使用“mgo”中提供的函数。下面是一个将一个用户的电话号码更新为新值的示例:
```
session, err := mgo.Dial("mongodb://localhost")
if err != nil {
panic(err.Error())
}
defer session.Close()
collection := session.DB("test").C("users")
err = collection.Update(bson.M{"name": "ZhangSan"}, bson.M{"$set": bson.M{"phone": "987654321"}})
if err != nil {
panic(err.Error())
}
fmt.Println("Updated user's phone number")
```
2.6 删除MongoDB数据库
删除MongoDB数据库需要使用“mgo”中提供的函数。下面是一个删除一个用户的示例:
```
session, err := mgo.Dial("mongodb://localhost")
if err != nil {
panic(err.Error())
}
defer session.Close()
collection := session.DB("test").C("users")
err = collection.Remove(bson.M{"name": "ZhangSan"})
if err != nil {
panic(err.Error())
}
fmt.Println("Deleted user")
```
结语:
本篇文章介绍了如何在Golang中使用MySQL和MongoDB进行CRUD操作,包括连接数据库、查询数据库、插入数据、更新数据和删除数据的示例。希望这些示例能帮助读者更好地使用Golang进行数据库操作。