go語言操作mysql數(shù)據(jù)庫
在Go語言中使用MySQL,需要使用第三方包 github.com/go-sql-driver/mysql
來連接和操作MySQL數(shù)據(jù)庫。下面是一個詳細(xì)的示例:
首先,安裝MySQL驅(qū)動包:
在命令行中運行以下命令來安裝 github.com/go-sql-driver/mysql
包:
go get -u github.com/go-sql-driver/mysql
創(chuàng)建一個Go文件(例如 main.go
),導(dǎo)入 database/sql
和 github.com/go-sql-driver/mysql
包,并連接到MySQL數(shù)據(jù)庫:
package main
import (
? ? "database/sql"
? ? "fmt"
? ? _ "github.com/go-sql-driver/mysql"
)
func main() {
? ? // 連接數(shù)據(jù)庫
? ? 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!")
? ? // 查詢數(shù)據(jù)庫
? ? rows, err := db.Query("SELECT id, name FROM users")
? ? if err != nil {
? ? ? ? panic(err.Error())
? ? }
? ? defer rows.Close()
? ? // 處理查詢結(jié)果
? ? 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數(shù)據(jù)庫的實際信息。
運行代碼后,它將連接到MySQL數(shù)據(jù)庫,并執(zhí)行一個簡單的查詢,輸出查詢結(jié)果中的每行記錄的ID和Name。
插入數(shù)據(jù)到數(shù)據(jù)庫:
package main
import (
? ? "database/sql"
? ? "fmt"
? ? _ "github.com/go-sql-driver/mysql"
)
func main() {
? ? // 連接數(shù)據(jù)庫
? ? db, err := sql.Open("mysql", "username:password@tcp(hostname:port)/dbname")
? ? if err != nil {
? ? ? ? panic(err.Error())
? ? }
? ? defer db.Close()
? ? // 插入數(shù)據(jù)
? ? insertStmt, err := db.Prepare("INSERT INTO users (name, age) VALUES (?, ?)")
? ? if err != nil {
? ? ? ? panic(err.Error())
? ? }
? ? defer insertStmt.Close()
? ? // 替換成實際的數(shù)據(jù)
? ? name := "John"
? ? age := 30
? ? _, err = insertStmt.Exec(name, age)
? ? if err != nil {
? ? ? ? panic(err.Error())
? ? }
? ? fmt.Println("Data inserted successfully!")
}
更新數(shù)據(jù)庫中的數(shù)據(jù):
package main
import (
? ? "database/sql"
? ? "fmt"
? ? _ "github.com/go-sql-driver/mysql"
)
func main() {
? ? // 連接數(shù)據(jù)庫
? ? db, err := sql.Open("mysql", "username:password@tcp(hostname:port)/dbname")
? ? if err != nil {
? ? ? ? panic(err.Error())
? ? }
? ? defer db.Close()
? ? // 更新數(shù)據(jù)
? ? updateStmt, err := db.Prepare("UPDATE users SET age = ? WHERE name = ?")
? ? if err != nil {
? ? ? ? panic(err.Error())
? ? }
? ? defer updateStmt.Close()
? ? // 替換成實際的數(shù)據(jù)
? ? name := "John"
? ? newAge := 35
? ? _, err = updateStmt.Exec(newAge, name)
? ? if err != nil {
? ? ? ? panic(err.Error())
? ? }
? ? fmt.Println("Data updated successfully!")
}