目前internet上流行的**構架方式是lamp,其中的m即mysql, 作為資料庫,mysql以免費、開源、使用方便為優勢成為了很多web開發的後端資料庫儲存引擎。
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-sql-driver中註冊了mysql這個資料庫驅動,第二個引數是dsn(data source name),它是go-sql-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資料庫《插入》
安裝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...
go操作mysql資料庫
var db sql.db 資料庫 控制代碼 var errorg error 全域性變數 func init 功能 查詢 引數 tablename 表名 cond 選擇條件 items 選擇的欄位名 返回值 未定 ex select id,name from flask sx test.stu t...
Go操作MySql資料庫
使用go操作mysql等資料庫,一般有兩種方式 一是使用database sql介面,直接在 裡硬編碼sql語句 二是使用gorm,即物件關係對映的方式在 裡抽象的運算元據庫。一般推薦使用第二種方式。go沒有內建的驅動支援任何資料庫,但是go定義了database sql介面,使用者可以基於驅動介面...