引言: 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进行数据库操作。