<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 5.3 使用SQLite數據庫 SQLite 是一個開源的嵌入式關系數據庫,實現自包容、零配置、支持事務的SQL數據庫引擎。其特點是高度便攜、使用方便、結構緊湊、高效、可靠。 與其他數據庫管理系統不同,SQLite 的安裝和運行非常簡單,在大多數情況下,只要確保SQLite的二進制文件存在即可開始創建、連接和使用數據庫。如果您正在尋找一個嵌入式數據庫項目或解決方案,SQLite是絕對值得考慮。SQLite可以是說開源的Access。 ## 驅動 Go支持sqlite的驅動也比較多,但是好多都是不支持database/sql接口的 - https://github.com/mattn/go-sqlite3 支持database/sql接口,基于cgo(關于cgo的知識請參看官方文檔或者本書后面的章節)寫的 - https://github.com/feyeleanor/gosqlite3 不支持database/sql接口,基于cgo寫的 - https://github.com/phf/go-sqlite3 不支持database/sql接口,基于cgo寫的 目前支持database/sql的SQLite數據庫驅動只有第一個,我目前也是采用它來開發項目的。采用標準接口有利于以后出現更好的驅動的時候做遷移。 ## 實例代碼 示例的數據庫表結構如下所示,相應的建表SQL: CREATE TABLE `userinfo` ( `uid` INTEGER PRIMARY KEY AUTOINCREMENT, `username` VARCHAR(64) NULL, `departname` VARCHAR(64) NULL, `created` DATE NULL ); CREATE TABLE `userdeatail` ( `uid` INT(10) NULL, `intro` TEXT NULL, `profile` TEXT NULL, PRIMARY KEY (`uid`) ); 看下面Go程序是如何操作數據庫表數據:增刪改查 package main import ( "database/sql" "fmt" "time" _ "github.com/mattn/go-sqlite3" ) func main() { db, err := sql.Open("sqlite3", "./foo.db") checkErr(err) //插入數據 stmt, err := db.Prepare("INSERT INTO userinfo(username, departname, created) values(?,?,?)") 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 time.Time 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() } func checkErr(err error) { if err != nil { panic(err) } } 我們可以看到上面的代碼和MySQL例子里面的代碼幾乎是一模一樣的,唯一改變的就是導入的驅動改變了,然后調用`sql.Open`是采用了SQLite的方式打開。 >sqlite管理工具:http://sqliteadmin.orbmu2k.de/ >可以方便的新建數據庫管理。 ## links * [目錄](<preface.md>) * 上一節: [使用MySQL數據庫](<05.2.md>) * 下一節: [使用PostgreSQL數據庫](<05.4.md>)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看