技术开发 频道

开源数据库:Berkeley DB和SQLite


    5. SQLite的特点 

    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编码的功能。对Java而言,在参考链接六中提供的 Apache的XML RPC项目中可以找到一个Base64编码的例子。

    上面介绍了两个比较常见的嵌入式数据库,Berkeley DB速度极快,可靠性高,但学习起来有一定难度。SQLite则简单易用,速度也很快,又可以应用标准的JDBC连接,但它功能却照Berkeley略有逊色,比如加密功能、二进制数据的处理等。


0
相关文章