go-sql-driver/mysql
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 创建数据库连接
db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name")
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())
}
res, err := insertStmt.Exec("Alice", 20)
if err != nil {
panic(err.Error())
}
id, err := res.LastInsertId()
if err != nil {
panic(err.Error())
}
fmt.Println("Inserted record id:", id)
// 查询数据
rows, err := db.Query("SELECT id, name, age FROM users WHERE age >= ?", 18)
if err != nil {
panic(err.Error())
}
defer rows.Close()
for rows.Next() {
var id int
var name string
var age int
err := rows.Scan(&id, &name, &age)
if err != nil {
panic(err.Error())
}
fmt.Println("Record:", id, name, age)
}
// 更新数据
updateStmt, err := db.Prepare("UPDATE users SET age = ? WHERE id = ?")
if err != nil {
panic(err.Error())
}
res, err = updateStmt.Exec(21, id)
if err != nil {
panic(err.Error())
}
affectedRows, err := res.RowsAffected()
if err != nil {
panic(err.Error())
}
fmt.Println("Updated", affectedRows, "rows")
// 删除数据
deleteStmt, err := db.Prepare("DELETE FROM users WHERE age < ?")
if err != nil {
panic(err.Error())
}
res, err = deleteStmt.Exec(20)
if err != nil {
panic(err.Error())
}
affectedRows, err = res.RowsAffected()
if err != nil {
panic(err.Error())
}
fmt.Println("Deleted", affectedRows, "rows")
}
PrepareExecQuery