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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # BoltDB數據庫使用簡明指南 ## 1、項目中引用第三方庫 ~~~ import ( "github.com/boltdb/bolt" // 從環境變量:%goPath% 中定義的路徑去查找第三方類庫 ) ~~~ ## 2、數據庫打開或創建 ~~~ db, err := bolt.Open("blockchain.db", 0600, nil)//0600:如果數據庫不存在,則自動創建一個 if err != nil { log.Panic(err) } defer db.Close() ~~~ 注意,bolt會給打開的數據庫文件加鎖,確保一個數據庫文件只會同時被打開一次。如果另外一個進程試圖打開它,操作將會掛起,直到該數據庫被關閉。 只讀模式,參數為0666。 ## 3、更新數據庫(插入或修改) ~~~ err = db.Update(func(tx *bolt.Tx) error { //取出叫"blocks"的表 b := tx.Bucket([]byte("blocks")) //往表里面存儲數據 if b != nil { //插入的鍵值對數據類型必須是字節數組 err := b.Put([]byte("1"), []byte("0x0000")) err := b.Put([]byte("11"), []byte("0x0001")) err := b.Put([]byte("111"), []byte("0x0002")) if err != nil { log.Panic(err) } } //一定要返回nil return nil }) //更新數據庫失敗 if err != nil { log.Panic(err) } ~~~ bolt使用事務(transaction)操作表,在同一時間只允許一個讀-寫事務執行,但同時可以允許有多個只讀事務執行。 ## 4、根據鍵值查詢數據 ~~~ err = db.View(func(tx *bolt.Tx) error { //取出叫"blocks"的表 b := tx.Bucket([]byte("blocks")) //根據鍵值讀取數據 if b != nil { data := b.Get([]byte("1")) fmt.Printf("%s\n", data) data := b.Get([]byte("11")) fmt.Printf("%s\n", data) } //一定要返回nil return nil }) //查詢數據庫失敗 if err != nil { log.Panic(err) } ~~~ bolt使用讀事務來查詢數據。 ## 5、光標操作 ~~~ db.View(func(tx *bolt.Tx) error { // 假定 bucket 存在并且有鍵值 b := tx.Bucket([]byte("MyBucket")) c := b.Cursor() for k, v := c.First(); k != nil; k, v = c.Next() { fmt.Printf("key=%s, value=%s\n", k, v) } return nil }) ~~~ 光標操作支持:First、Last、Seek、Next、Prev ## 6、ForEach操作 ~~~ db.View(func(tx *bolt.Tx) error { // 假定 bucket 存在并且有鍵值 b := tx.Bucket([]byte("blocks")) b.ForEach(func(k, v []byte) error { fmt.Printf("key=%s, value=%s\n", k, v) return nil }) return nil }) ~~~ ## 7、其它操作 bolt還有批量更新操作、統計、備份操作的API,參見官方文檔: [https://github.com/boltdb/bolt#opening-a-database](https://github.com/boltdb/bolt#opening-a-database) 另外,bolt支持在Android、IOS平臺上進行原生態開發
                  <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>

                              哎呀哎呀视频在线观看