在golang中学习使用事务操作mysql数据库

//usage:在golang中学习使用事务操作数据库

//    @author     Mr.Luo
//    @time    2015年2月13日15:09:26

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "log"
)

var (
    driverName     string
    dataSourceName string
)

func init() {
    driverName = "mysql"
    dataSourceName = "root:123456@/godb"
}

func main() {
    db := Conn()
    //开启事务
    tx, err := db.Begin()
    if err != nil {
        log.Fatal(err)
    }
    //使用tx
    stmt, err := tx.Prepare("update tab_user set name=? where id = ?")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(stmt)
    // _, err = tx.Exec("测试事务", 4)
     _, err = stmt.Exec("测试事务", 4) //注意别调用错了 tx.Exec

    //出异常回滚
    defer tx.Rollback()

    //提交事务
    tx.Commit()

}

func Conn() *sql.DB {
    db, err := sql.Open(driverName, dataSourceName)
    if err != nil {
        log.Fatal(err)
    }
    return db

}

有话要说