diff --git a/zh/05.2.md b/zh/05.2.md index cbf68ca1de9cd4958396dc180da46faac8b0658d..d1fb09c2b199834ac1668b459e902e40fc617b42 100644 --- a/zh/05.2.md +++ b/zh/05.2.md @@ -23,7 +23,7 @@ Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持data `departname` VARCHAR(64) NULL DEFAULT NULL, `created` DATE NULL DEFAULT NULL, PRIMARY KEY (`uid`) - ) + ); CREATE TABLE `userdetail` ( `uid` INT(10) NOT NULL DEFAULT '0', @@ -33,6 +33,7 @@ Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持data ) 如下示例将示范如何使用database/sql接口对数据库表进行增删改查操作 +```Go package main @@ -108,7 +109,8 @@ Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持data panic(err) } } - + +``` 通过上面的代码我们可以看出,Go操作Mysql数据库是很方便的。 diff --git a/zh/05.3.md b/zh/05.3.md index 4457a986ecfd09605e66509c951fab485e9bd90f..5b30c194cdcb0e1ba83bcaefd03c91721c1eed41 100644 --- a/zh/05.3.md +++ b/zh/05.3.md @@ -29,6 +29,7 @@ Go支持sqlite的驱动也比较多,但是好多都是不支持database/sql接 ); 看下面Go程序是如何操作数据库表数据:增删改查 +```Go package main @@ -104,7 +105,7 @@ Go支持sqlite的驱动也比较多,但是好多都是不支持database/sql接 panic(err) } } - +``` 我们可以看到上面的代码和MySQL例子里面的代码几乎是一模一样的,唯一改变的就是导入的驱动改变了,然后调用`sql.Open`是采用了SQLite的方式打开。 diff --git a/zh/05.4.md b/zh/05.4.md index 02a4b2fa2f9dfa8c96aeba77057abe15419df835..b94c8c10b4e336d34ec8b45621008531b90b0815 100644 --- a/zh/05.4.md +++ b/zh/05.4.md @@ -38,12 +38,14 @@ Go实现的支持PostgreSQL的驱动也很多,因为国外很多人在开发 看下面这个Go如何操作数据库表数据:增删改查 -package main +```Go + + package main import ( "database/sql" "fmt" - _ "https://github.com/lib/pq" + _ "github.com/lib/pq" ) func main() { @@ -58,10 +60,15 @@ package main checkErr(err) //pg不支持这个函数,因为他没有类似MySQL的自增ID - id, err := res.LastInsertId() + // id, err := res.LastInsertId() + // checkErr(err) + // fmt.Println(id) + + var lastInsertId int + err = db.QueryRow("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) returning uid;", "astaxie", "研发部门", "2012-12-09").Scan(&lastInsertId) checkErr(err) + fmt.Println("最后插入id =", lastInsertId) - fmt.Println(id) //更新数据 stmt, err = db.Prepare("update userinfo set username=$1 where uid=$2") @@ -113,6 +120,7 @@ package main panic(err) } } +``` 从上面的代码我们可以看到,PostgreSQL是通过`$1`,`$2`这种方式来指定要传递的参数,而不是MySQL中的`?`,另外在sql.Open中的dsn信息的格式也与MySQL的驱动中的dsn格式不一样,所以在使用时请注意它们的差异。