<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式數(shù)據(jù)庫在Java中的應(yīng)用[1]

          嵌入式數(shù)據(jù)庫在Java中的應(yīng)用[1]

          作者: 時(shí)間:2008-04-03 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/258086.htm

          Berkeley DB每一個(gè)記錄都有一個(gè)鍵值和對應(yīng)的數(shù)據(jù)值,而鍵值和數(shù)據(jù)必須是類com.sleepycat.db.Dbt的對象或其子類的對象。Dbt提供了一些方法可以將byte數(shù)組或Object對象保存到Dbt的對象中去。比如,Dbt類中的set_data(byte[])或set_object(Object)方法。注意到目前Berkeley DB中的 API命名方法并不符合的命名規(guī)范,比如set_data()方法應(yīng)該命名為setData()方法。Berkeley DB許諾在下一個(gè)版本中會提供符合命名規(guī)范的 API。

            Berkeley DB對任何存入的數(shù)據(jù)都是直接原樣存儲到數(shù)據(jù)文件中去,無論其是二進(jìn)制數(shù)據(jù)還是ASCII或Unicode等編碼的文本。通??梢岳眠@一特性和Java串行化的概念方便的進(jìn)行數(shù)據(jù)的存取。例如聲明一個(gè)類
            public class AccountInfo implements Serializable{
              //帳戶信息
              public String loginName;
              public String password;
              public boolean auotLogin;
            }

            在這個(gè)AccountInfo類中僅僅包含了數(shù)據(jù)項(xiàng)的定義。我們完全可以將這個(gè)類看作數(shù)據(jù)庫的表中字段定義??梢杂肂erkeley DB保存AccountInfo對象的串行化二進(jìn)制數(shù)據(jù),以此來保存這個(gè)對象中的變量值。在操作中,先對Dbt的對象調(diào)用set_object(AccountInfo)方法,而后把這個(gè)Dbt對象作為一條紀(jì)錄保存到表中。當(dāng)然,我們也可以應(yīng)用繼承Dbt類的方法來完成對數(shù)據(jù)的保存。

            下面這段簡單代碼演示如何將數(shù)據(jù)存入到數(shù)據(jù)庫中,然后再用游標(biāo)對象瀏覽全部數(shù)據(jù)。

            //注意,下面的程序的忽略了對異常處理,寫入數(shù)據(jù)初始化等等一些代碼,請?jiān)谶m當(dāng)修改后再編
            //譯運(yùn)行它
            Db dbFile = null;
            //生成Db對象
            dbFile = new Db(null, 0);
            //用BTree方式打開數(shù)據(jù)庫,庫文件是在c:/temp下的mydata.db文件,表名是employee
            //如果數(shù)據(jù)庫不存在,則自動生成一個(gè)新的數(shù)據(jù)庫。
            dbFile.open(null,c:tempmydata.db,employee,Db.DB_BTREE,
            Db.DB_CREATE,0);
            Dbt key = new Dbt();
            Dbt data = new Dbt();
            //向庫文件中插入一條數(shù)據(jù),如果已經(jīng)存在,打印出錯(cuò)信息
            if (dbFile.put(null,key, data, Db.DB_APPEND) == Db.DB_KEYEXIST) {
            System.out.println(Key already exists.);
            }
            //關(guān)閉數(shù)據(jù)文件
            dbFile.close(0);
            //重新打開數(shù)據(jù)文件
            dbFile = new Db(null, 0);
            dbFile.open(null, c:tempmydata.db, employee, Db.DB_UNKNOWN, 0, 0644);
            // 聲明一個(gè)數(shù)據(jù)庫游標(biāo)Dbc對象iterator
            Dbc iterator = dbFile.cursor(null, 0);
            // 遍歷整個(gè)表
            Dbt key = new Dbt();
            while (iterator.get(key, data, Db.DB_NEXT) == 0)
            {
              System.out.println(reading);
            }



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();