|
Go语言提供了对MySQL数据库的访问支持。要在Go程序中操作MySQL,你需要安装一个第三方库来提供对MySQL的支持。有几个不同的库可以用来连接和操作MySQL,包括:
go-sql-driver/mysql
github.com/go-sql-driver/mysql
github.com/jinzhu/gorm/dialects/mysql
推荐使用 github.com/go-sql-driver/mysql 驱动,这是 Go 语言官方推荐的 MySQL 驱动。安装方式如下:
go get github.com/go-sql-driver/mysql
安装好第三方库后,你就可以在Go程序中使用它们提供的API来连接到MySQL数据库并执行各种操作,例如执行SQL查询、插入、更新和删除数据等。下面是一个简单的例子,说明如何在Go程序中连接到MySQL数据库并执行一个查询:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接到MySQL数据库
db, err := sql.Open("mysql", "user:password@/database")
if err != nil {
panic(err.Error())
}
defer db.Close()
// 执行SQL查询
rows, err := db.Query("SELECT * FROM users")
if err != nil {
panic(err.Error())
}
// 遍历查询结果
for rows.Next() {
var id int
var name string
var email string
err = rows.Scan(&id, &name, &email)
if err != nil {
panic(err.Error())
}
fmt.Println(id, name, email)
}
}
// 使用数据库配置信息方式
dbConfig := &mysql.Config{
User: "root",
Passwd: "root",
Net: "tcp",
Addr: "127.0.0.1:3306",
DBName: "test",
AllowNativePasswords: true,
Params: map[string]string{
"charset": "utf8mb4",
},
}
// 连接数据库
db, err := sql.Open("mysql", dbConfig.FormatDSN())
if err != nil {
log.Fatal(err)
}
// 关闭数据库连接
defer db.Close()
// 准备插入数据的SQL语句
stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES (?, ?)")
if err != nil {
log.Fatal(err)
}
// 执行插入操作
res, err := stmt.Exec("Tom", 25)
if err != nil {
log.Fatal(err)
}
// 获取插入的ID
lastID, err := res.LastInsertId()
if err != nil {
log.Fatal(err)
}
// 获取影响的行数
rowsAffected, err := res.RowsAffected()
if err != nil {
log.Fatal(err)
}
fmt.Println(lastID, rowsAffected) // 输出插入的ID和影响的行数
//删除操作
stmt, err := db.Prepare("DELETE FROM table_name WHERE id=?")
if err != nil {
log.Fatal(err)
}
_, err = stmt.Exec(1)
if err != nil {
log.Fatal(err)
}
//修改操作
stmt, err := db.Prepare("UPDATE table_name SET name=? WHERE id=?")
if err != nil {
log.Fatal(err)
}
_, err = stmt.Exec("new name", 1)
if err != nil {
log.Fatal(err)
}
// 执行SQL查询
rows, err := db.Query("SELECT * FROM users")
if err != nil {
panic(err.Error())
}
// 遍历查询结果
//参考文章开头查询遍历
注意:在执行删除和修改操作时需要注意事务处理,以确保数据库操作的完整性和一致性。 |
|