go语言操作mysql数据库
在Go语言中使用MySQL,需要使用第三方包 github.com/go-sql-driver/mysql
来连接和操作MySQL数据库。下面是一个详细的示例:
首先,安装MySQL驱动包:
在命令行中运行以下命令来安装 github.com/go-sql-driver/mysql
包:
go get -u github.com/go-sql-driver/mysql
创建一个Go文件(例如 main.go
),导入 database/sql
和 github.com/go-sql-driver/mysql
包,并连接到MySQL数据库:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接数据库
db, err := sql.Open("mysql", "username:password@tcp(hostname:port)/dbname")
if err != nil {
panic(err.Error())
}
defer db.Close()
// 测试连接是否成功
err = db.Ping()
if err != nil {
panic(err.Error())
}
fmt.Println("Connected to MySQL database!")
// 查询数据库
rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
panic(err.Error())
}
defer rows.Close()
// 处理查询结果
for rows.Next() {
var id int
var name string
err = rows.Scan(&id, &name)
if err != nil {
panic(err.Error())
}
fmt.Printf("ID: %d, Name: %s\n", id, name)
}
}
需要将 username
,password
,hostname
,port
和 dbname
替换为你的MySQL数据库的实际信息。
运行代码后,它将连接到MySQL数据库,并执行一个简单的查询,输出查询结果中的每行记录的ID和Name。
插入数据到数据库:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接数据库
db, err := sql.Open("mysql", "username:password@tcp(hostname:port)/dbname")
if err != nil {
panic(err.Error())
}
defer db.Close()
// 插入数据
insertStmt, err := db.Prepare("INSERT INTO users (name, age) VALUES (?, ?)")
if err != nil {
panic(err.Error())
}
defer insertStmt.Close()
// 替换成实际的数据
name := "John"
age := 30
_, err = insertStmt.Exec(name, age)
if err != nil {
panic(err.Error())
}
fmt.Println("Data inserted successfully!")
}
更新数据库中的数据:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接数据库
db, err := sql.Open("mysql", "username:password@tcp(hostname:port)/dbname")
if err != nil {
panic(err.Error())
}
defer db.Close()
// 更新数据
updateStmt, err := db.Prepare("UPDATE users SET age = ? WHERE name = ?")
if err != nil {
panic(err.Error())
}
defer updateStmt.Close()
// 替换成实际的数据
name := "John"
newAge := 35
_, err = updateStmt.Exec(newAge, name)
if err != nil {
panic(err.Error())
}
fmt.Println("Data updated successfully!")
}