Go語言操作MySQL數據庫更新數據,主要使用database/sql
包和相應的數據庫驅動。以下是一些更新數據的技巧:
以下是一個使用Go語言和MySQL數據庫更新數據的示例代碼:
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"fmt"
)
func main() {
db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname")
if err != nil {
panic(err)
}
defer db.Close()
// 更新單條記錄
res, err := db.Exec("UPDATE users SET name = ? WHERE id = ?", "new_name", 1)
if err != nil {
panic(err)
}
affected, err := res.RowsAffected()
if err != nil {
panic(err)
}
fmt.Printf("Updated %d record(s)\n", affected)
// 批量更新多條記錄
stmt, err := db.Prepare("UPDATE users SET name = ? WHERE id IN (?)")
if err != nil {
panic(err)
}
defer stmt.Close()
ids := []int{1, 2, 3}
names := []string{"new_name1", "new_name2", "new_name3"}
for i := range ids {
_, err := stmt.Exec(names[i], ids[i])
if err != nil {
panic(err)
}
}
// 使用事務
tx, err := db.Begin()
if err != nil {
panic(err)
}
defer tx.Rollback()
_, err = tx.Exec("UPDATE users SET balance = balance - ? WHERE id = ?", 100, 1)
if err != nil {
tx.Rollback()
panic(err)
}
_, err = tx.Exec("UPDATE orders SET status = ? WHERE user_id = ?", "completed", 1)
if err != nil {
tx.Rollback()
panic(err)
}
tx.Commit()
}
請注意,上述示例代碼中的username
、password
、localhost
、3306
、dbname
等值需要替換為你自己的MySQL數據庫配置信息。同時,示例代碼中的錯誤處理比較簡單,僅用于演示目的,實際應用中你可能需要更完善的錯誤處理邏輯。