新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式數據庫在Java中的應用[1]

        嵌入式數據庫在Java中的應用[1]

        作者: 時間:2008-04-03 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/258086.htm參考下面的應用JDBC連接的例程:

          //聲明JDBC驅動程序
          Class clz = Class.forName(.JDBCDriver);
          //連接數據庫
          Connection conn = DriverManager.getConnection(jdbc:sqlite:/c:/temp/e2.db);
          Statement stmt = conn.createStatement();
          //生成person表,包含名子和年齡字段
          stmt.execute(create table person (name varchar(100),age int));
          //插入數據
          stmt.execute(insert into person values('steve',25));
          //用SQL語句讀出數據
          result = stmt.executeQuery(select * from person);
          while(result.next()){
          System.out.println(result.getString(1));
          System.out.println(result.getInt(2));
          }

          運行程序時要在.exe命令行加入選項java.library.path指定到Sqlite_jni.dll所在的路徑。例如,如果Sqlite_jni.dll放在c:sqliteNative 路徑下面,運行類com.e2one.MyClass 的命令行將會是這樣:java -Djava.library.path=c:sqliteNative com.e2one.MyClass。

          5. 的特點

          SQLite是無數據類型的數據庫。雖然在生成表結構的時候,要聲明每個域的數據類型,但SQLite并不做任何檢查。開發人員要靠自己的程序控制輸入與讀出數據的類型是正確的。這里有一個例外,就是當主鍵為整型值時,如果要插入一個非整型值時會產生異常。另外,雖然在插入或讀出數據的時候是不區分類型的,但在比較的時候,不同數據類型是有區別的。比如:

        CREATE TABLE MyTable(a INTEGER, b TEXT);
        INSERT INTO MyTable valueS(0,0);

          當執行下面的查詢:

        SELECT count(*) FROM MyTable WHERE a=='00';

          會返回一條記錄,因為字段a的類型是整型,而數字00與0是相等的。

          而執行下面的查詢則不會返回記錄:

        SELECT count(*) FROM MyTable WHERE b=='00';

          因為字段b是字符類型,字符00與0是不相等的。

          SQLite提供了對Transaction的支持。應用Transaction即保證了數據的完整性,也會提高運行速度,因為多條語句一起提交給數據庫的速度會比一條一條的提交方式更快。

          對二進制數據,SQLite不能直接保存。但可以先將二進制的數據轉換成ASCII編碼,然后再保存。Base64編碼機制是最常見的把二進制數據轉換成ASCII編碼的手段。在SQLite的C語言代碼encode.c中提供了Base64編碼的功能。對而言,在參考鏈接六中提供的Apache的XML RPC項目中可以找到一個Base64編碼的例子。

          上面介紹了兩個比較常見的,Berkeley DB速度極快,可靠性高,但學習起來有一定難度。SQLite則簡單易用,速度也很快,又可以應用標準的JDBC連接,但它功能卻照Berkeley略有遜色,比如加密功能、二進制數據的處理等。




        上一頁 1 2 3 4 5 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 福安市| 江川县| 伊通| 丰原市| 当阳市| 南通市| 南江县| 泰顺县| 金寨县| 疏勒县| 育儿| 五常市| 牡丹江市| 渝北区| 营山县| 高雄县| 马关县| 安阳县| 德惠市| 景谷| 修水县| 大同市| 遂宁市| 新野县| 财经| 钟山县| SHOW| 修武县| 正宁县| 长岭县| 涪陵区| 玉屏| 兴和县| 全南县| 岑巩县| 泾川县| 改则县| 望都县| 梨树县| 盘锦市| 徐水县|