diff --git a/zh/05.2.md b/zh/05.2.md index bc1aaf19..91342750 100644 --- a/zh/05.2.md +++ b/zh/05.2.md @@ -18,99 +18,99 @@ Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持data 接下来的几个小节里面我们都将采用同一个数据库表结构:数据库test,用户表userinfo,关联用户信息表userdetail。 ```sql - CREATE TABLE `userinfo` ( - `uid` INT(10) NOT NULL AUTO_INCREMENT, - `username` VARCHAR(64) NULL DEFAULT NULL, - `departname` VARCHAR(64) NULL DEFAULT NULL, - `created` DATE NULL DEFAULT NULL, - PRIMARY KEY (`uid`) - ); +CREATE TABLE `userinfo` ( + `uid` INT(10) NOT NULL AUTO_INCREMENT, + `username` VARCHAR(64) NULL DEFAULT NULL, + `departname` VARCHAR(64) NULL DEFAULT NULL, + `created` DATE NULL DEFAULT NULL, + PRIMARY KEY (`uid`) +); - CREATE TABLE `userdetail` ( - `uid` INT(10) NOT NULL DEFAULT '0', - `intro` TEXT NULL, - `profile` TEXT NULL, - PRIMARY KEY (`uid`) - ) +CREATE TABLE `userdetail` ( + `uid` INT(10) NOT NULL DEFAULT '0', + `intro` TEXT NULL, + `profile` TEXT NULL, + PRIMARY KEY (`uid`) +) ``` 如下示例将示范如何使用database/sql接口对数据库表进行增删改查操作 ```Go - package main +package main - import ( - _ "github.com/go-sql-driver/mysql" - "database/sql" - "fmt" - //"time" - ) +import ( + _ "github.com/go-sql-driver/mysql" + "database/sql" + "fmt" + //"time" +) - func main() { - db, err := sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8") +func main() { + db, err := sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8") + checkErr(err) + + //插入数据 + stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?") + checkErr(err) + + res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09") + checkErr(err) + + id, err := res.LastInsertId() + checkErr(err) + + fmt.Println(id) + //更新数据 + stmt, err = db.Prepare("update userinfo set username=? where uid=?") + checkErr(err) + + res, err = stmt.Exec("astaxieupdate", id) + checkErr(err) + + affect, err := res.RowsAffected() + checkErr(err) + + fmt.Println(affect) + + //查询数据 + rows, err := db.Query("SELECT * FROM userinfo") + checkErr(err) + + for rows.Next() { + var uid int + var username string + var department string + var created string + err = rows.Scan(&uid, &username, &department, &created) checkErr(err) - - //插入数据 - stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?") - checkErr(err) - - res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09") - checkErr(err) - - id, err := res.LastInsertId() - checkErr(err) - - fmt.Println(id) - //更新数据 - stmt, err = db.Prepare("update userinfo set username=? where uid=?") - checkErr(err) - - res, err = stmt.Exec("astaxieupdate", id) - checkErr(err) - - affect, err := res.RowsAffected() - checkErr(err) - - fmt.Println(affect) - - //查询数据 - rows, err := db.Query("SELECT * FROM userinfo") - checkErr(err) - - for rows.Next() { - var uid int - var username string - var department string - var created string - err = rows.Scan(&uid, &username, &department, &created) - checkErr(err) - fmt.Println(uid) - fmt.Println(username) - fmt.Println(department) - fmt.Println(created) - } - - //删除数据 - stmt, err = db.Prepare("delete from userinfo where uid=?") - checkErr(err) - - res, err = stmt.Exec(id) - checkErr(err) - - affect, err = res.RowsAffected() - checkErr(err) - - fmt.Println(affect) - - db.Close() - + fmt.Println(uid) + fmt.Println(username) + fmt.Println(department) + fmt.Println(created) } - func checkErr(err error) { - if err != nil { - panic(err) - } + //删除数据 + stmt, err = db.Prepare("delete from userinfo where uid=?") + checkErr(err) + + res, err = stmt.Exec(id) + checkErr(err) + + affect, err = res.RowsAffected() + checkErr(err) + + fmt.Println(affect) + + db.Close() + +} + +func checkErr(err error) { + if err != nil { + panic(err) } - +} + ``` 通过上面的代码我们可以看出,Go操作Mysql数据库是很方便的。