//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
}
有话要说