go中支援mysql的驅動目前比較多,有如下幾種,有些是支援database/sql標準,而有些是採用了自己的實現介面,常用的有如下幾種:
接下來的幾個小節裡面我們都將採用同乙個資料庫表結構:資料庫test,使用者表userinfo,關聯使用者資訊表userdetail。
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`)
)
如下示例將示範如何使用database/sql介面對資料庫表進行增刪改查操作
//刪除資料
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)
}
通過上面的**我們可以看出,go操作mysql資料庫是很方便的。
關鍵的幾個函式我解釋一下:
sql.open()函式用來開啟乙個註冊過的資料庫驅動,go-mysql-driver中註冊了mysql這個資料庫驅動,第二個引數是dns(data source name),它是go-mysql-driver定義的一些資料庫鏈結和配置資訊。它支援如下格式:
user@unix(/path/to/socket)/dbname?charset=utf8
user:password@tcp(localhost:5555)/dbname?charset=utf8
user:password@/dbname
user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname
db.prepare()函式用來返回準備要執行的sql操作,然後返回準備完畢的執行狀態。
db.query()函式用來直接執行sql返回rows結果。
stmt.exec()函式用來執行stmt準備好的sql語句
我們可以看到我們傳入的引數都是=?對應的資料,這樣做的方式可以一定程度上防止sql注入。
Go語言中使用MySql資料庫
go中支援mysql的驅動目前比較多,有如下幾種,有些是支援database sql標準,而有些是採用了自己的實現介面,常用的有如下幾種 接下來的幾個小節裡面我們都將採用同乙個資料庫表結構 資料庫test,使用者表userinfo,關聯使用者資訊表userdetail。create table us...
Go語言中使用SQLite資料庫
go支援sqlite的驅動也比較多,但是好多都是不支援database sql介面的 目前支援database sql的sqlite資料庫驅動只有第乙個,我目前也是採用它來開發專案的。採用標準介面有利於以後出現更好的驅動的時候做遷移。示例的資料庫表結構如下所示,相應的建表sql create tab...
Go中使用MYSQL資料庫《插入》
安裝mysql驅動 go get github.com go sql driver mysql安裝sqlx驅動 go get github.com jmoiron sqlx第一種 package main 與資料庫建立連線 var db sql.db func init else func main...