发布时间:2024-12-23 03:31:24
以下是一个使用Golang连接到MySQL数据库的示例:
```go import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func main() { // 连接数据库 db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/dbname") if err != nil { panic(err.Error()) } defer db.Close() } ```以下是一个使用Golang执行查询操作的示例:
```go func getUsers(db *sql.DB) ([]User, error) { // 准备查询语句 stmt, err := db.Prepare("SELECT id, name FROM users") if err != nil { return nil, err } defer stmt.Close() // 执行查询语句 rows, err := stmt.Query() if err != nil { return nil, err } defer rows.Close() var users []User for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name) if err != nil { return nil, err } users = append(users, user) } return users, nil } ```以下是一个使用Golang处理事务的示例:
```go func transferFunds(db *sql.DB, fromAccount, toAccount string, amount float64) error { tx, err := db.Begin() if err != nil { return err } // 从一个账户扣除资金 _, err = tx.Exec("UPDATE accounts SET balance = balance - ? WHERE account = ?", amount, fromAccount) if err != nil { tx.Rollback() return err } // 将资金转移到另一个账户 _, err = tx.Exec("UPDATE accounts SET balance = balance + ? WHERE account = ?", amount, toAccount) if err != nil { tx.Rollback() return err } err = tx.Commit() if err != nil { tx.Rollback() return err } return nil } ```以下是一个使用Gorm进行数据库操作的示例:
```go import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) type User struct { gorm.Model Name string } func main() { // 连接数据库 db, err := gorm.Open("mysql", "user:password@tcp(localhost:3306)/dbname") if err != nil { panic(err.Error()) } defer db.Close() // 创建表 db.AutoMigrate(&User{}) // 插入记录 user := User{Name: "John"} db.Create(&user) // 查询记录 var users []User db.Find(&users) } ```