Go DB3. 使用SQLite數(shù)據(jù)庫

SQLite 是一個(gè)開源的嵌入式關(guān)系數(shù)據(jù)庫两波,實(shí)現(xiàn)自包容瞳步、零配置、支持事務(wù)的SQL數(shù)據(jù)庫引擎腰奋。其特點(diǎn)是高度便攜单起、使用方便、結(jié)構(gòu)緊湊氛堕、高效馏臭、可靠野蝇。

與其他數(shù)據(jù)庫管理系統(tǒng)不同讼稚,SQLite的安裝和運(yùn)行非常簡(jiǎn)單,在大多數(shù)情況下,只要確保SQLite的二進(jìn)制文件存在即可開始創(chuàng)建绕沈、連接和使用數(shù)據(jù)庫锐想。如果您正在尋找一個(gè)嵌入式數(shù)據(jù)庫項(xiàng)目或解決方案,SQLite是絕對(duì)值得考慮乍狐。

SQLite驅(qū)動(dòng)

Go支持sqlite的驅(qū)動(dòng)也比較多赠摇,但是好多都是不支持database/sql接口的(推薦)

* https://github.com/mattn/go-sqlite3 支持database/sql接口,基于cgo寫的

* https://github.com/feyeleanor/gosqlite3 不支持database/sql接口,基于cgo寫的

* https://github.com/phf/go-sqlite3 不支持database/sql接口藕帜,基于cgo寫的

目前支持database/sql的SQLite數(shù)據(jù)庫驅(qū)動(dòng)只有第一個(gè)烫罩,推薦使用。采用標(biāo)準(zhǔn)接口有利于以后出現(xiàn)更好的驅(qū)動(dòng)的時(shí)候做遷移洽故。

示例代碼

1贝攒、示例的數(shù)據(jù)庫表結(jié)構(gòu)如下所示,相應(yīng)的建表SQL:

CREATE TABLE `userinfo` (

????`uid` INTEGER PRIMARY KEY AUTOINCREMENT,

????`username` VARCHAR(64) NULL,

????`department` VARCHAR(64) NULL,

????`created` DATE NULL

);

CREATE TABLE `userdetail` (

????`uid` INT(10) NULL,

????`intro` TEXT NULL,

????`profile` TEXT NULL,

????PRIMARY KEY (`uid`)

);

2时甚、使用database/sql接口對(duì)數(shù)據(jù)庫表進(jìn)行增刪改查操作:

package main

import (

????"database/sql"

????"fmt"

????_ "github.com/mattn/go-sqlite3"

)

func main() {

????// 連接數(shù)據(jù)庫

????db, err := sql.Open("sqlite3", "./foo.db")

????checkErr(err)

????defer db.Close()

????// 插入數(shù)據(jù)

????stmt, err := db.Prepare("INSERT INTO userinfo(username, department, created) values(?,?,?)")

????checkErr(err)

????res, err := stmt.Exec("lai", "rm", "2018-01-01")

????checkErr(err)

????// 最新記錄ID

????id, err := res.LastInsertId()

????checkErr(err)

????fmt.Println(id)

????// 更新數(shù)據(jù)

????stmt, err = db.Prepare("UPDATE userinfo SET username=? WHERE uid=?")

????checkErr(err)

????res, err = stmt.Exec("laiupdate", id)

????checkErr(err)

????affect, err := res.RowsAffected()

????checkErr(err)

????fmt.Println(affect)

????// 查詢數(shù)據(jù)

????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)

????}

????// 刪除數(shù)據(jù)

????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)

}

func checkErr(err error) {

????if err != nil {

????????panic(err)

????}

}

對(duì)比MySQL數(shù)據(jù)庫的操作隘弊,唯一改變的就是導(dǎo)入的驅(qū)動(dòng)改變了,然后調(diào)用sql.Open是采用了SQLite的方式打開荒适。

管理工具

sqlite管理工具:http://sqliteadmin.orbmu2k.de/

可以方便的執(zhí)行數(shù)據(jù)庫的相關(guān)管理梨熙。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市刀诬,隨后出現(xiàn)的幾起案子咽扇,更是在濱河造成了極大的恐慌,老刑警劉巖舅列,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肌割,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡帐要,警方通過查閱死者的電腦和手機(jī)把敞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榨惠,“玉大人奋早,你說我怎么就攤上這事≡龋” “怎么了耽装?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長期揪。 經(jīng)常有香客問我掉奄,道長,這世上最難降的妖魔是什么凤薛? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任姓建,我火速辦了婚禮,結(jié)果婚禮上缤苫,老公的妹妹穿的比我還像新娘速兔。我一直安慰自己,他們只是感情好活玲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布涣狗。 她就那樣靜靜地躺著谍婉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镀钓。 梳的紋絲不亂的頭發(fā)上穗熬,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音丁溅,去河邊找鬼死陆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛唧瘾,可吹牛的內(nèi)容都是我干的措译。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼饰序,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼领虹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起求豫,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤塌衰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蝠嘉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體最疆,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年蚤告,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了努酸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杜恰,死狀恐怖获诈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情心褐,我是刑警寧澤舔涎,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站逗爹,受9級(jí)特大地震影響亡嫌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掘而,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一挟冠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧镣屹,春花似錦圃郊、人聲如沸价涝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至伪窖,卻和暖如春逸寓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背覆山。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工竹伸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人簇宽。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓勋篓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親魏割。 傳聞我的和親對(duì)象是個(gè)殘疾皇子譬嚣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容