文件数据库有哪些?性能和稳定性的评价如何?最好能有实例说明.一定要能够任意移动数据库文件位置,比如从Linux下移动Windows下或从C:移动到D:首先感谢张琎的回答,但我查看了相关的资料,也发

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 09:02:25
文件数据库有哪些?性能和稳定性的评价如何?最好能有实例说明.一定要能够任意移动数据库文件位置,比如从Linux下移动Windows下或从C:移动到D:首先感谢张琎的回答,但我查看了相关的资料,也发

文件数据库有哪些?性能和稳定性的评价如何?最好能有实例说明.一定要能够任意移动数据库文件位置,比如从Linux下移动Windows下或从C:移动到D:首先感谢张琎的回答,但我查看了相关的资料,也发
文件数据库有哪些?性能和稳定性的评价如何?最好能有实例说明.
一定要能够任意移动数据库文件位置,比如从Linux下移动Windows下或从C:移动到D:
首先感谢张琎的回答,但我查看了相关的资料,也发现你的某些内容是不正确的.
你说SQLite不支持JDBC、ODBC,好像不是这样的,以下文字节选自维基百科
SQLite also has bindings for a large number of programming languages,including BASIC,C,C++,Common Lisp,Java,C#,Delphi,Curl,Lua,Tcl,R,PHP,Perl,Ruby,Objective-C (on Mac OS X),Python,newLisp and Smalltalk.There is also a COM (ActiveX) wrapper making SQLite accessible on Windows to scripted languages such as Javascript and VBScript.This adds database capabilities to HTML Applications (HTA).[3]

文件数据库有哪些?性能和稳定性的评价如何?最好能有实例说明.一定要能够任意移动数据库文件位置,比如从Linux下移动Windows下或从C:移动到D:首先感谢张琎的回答,但我查看了相关的资料,也发
文件数据库
文件数据库又叫嵌入式数据库,将整个数据库的内容保存在单个索引文件中,以便于数据库的发布.
文件数据库的3个重要特征(相对于传统数据库)
1. 数据操作接口
SQL92标准,不管是传统数据库,还是文件数据库,都必须支持SQL92标准.
2. 数据保存格式
传统数据库(DB2,Oracle,SQL server等)数据保存的方式各异.
文件数据库将数据保存在单一文件中.
3. API支持
传统数据库都支持ODBC和JDBC.
某些文件数据库不支持ODBC和JDBC(sqlite都不支持,Berkeley DB有ODBC和JDBC支持,Firdbird有第三方的ODBC驱动).
文件数据库与传统数据库的比较
优势:由于数据保存在单一文件中,数据库的部署和发布都比较简单,适用于内嵌在应用程序中.
数据量不是太大时,速度比传统数据库要快.
缺点:由于数据保存在单一文件中,数据库打开时,该文件会被整个load到内存,应此数据库不能过大(100M以内,个人测试).
各种文件数据库的比较
Sqlite:老牌的文件数据库,完全免费 ( public domain ),使用方便,无须任何配置,下载源代码编译成库或者直接编译到应用程序都可以(250K,C代码).支持事务机制和blob数据类型.http://www.sqlite.org/
Berkerley DB:更老牌的文件数据库,最稳定的数据库,完全可以取代大部分传统client/server数据库的应用场合;支持xml(代价是30M硬盘空间).缺点是配置和使用比较复杂,不太适合小项目.
Firbird:与sqlite比较类似,有C#支持.某些发布版本不能build,很久没有关注了.
Access:一般不考虑
Sqlite简单介绍
个人比较喜欢sqlite,使用最方便,唯一的准备工作是下载250K的源;而且作者很热心,有问必答.
以下演示一下使用sqlite的步骤,先创建一个数据库,然后查询其中的内容.2个重要结构体和5个主要函数:
sqlite3 *pdb,数据库句柄,跟文件句柄FILE很类似
sqlite3_stmt *stmt,这个相当于ODBC的Command对象,用于保存编译好的SQL语句
sqlite3_open(),打开数据库
sqlite3_exec(),执行非查询的sql语句
sqlite3_prepare(),准备sql语句,执行select语句或者要使用parameter bind时,用这个函数(封装了sqlite3_exec).
Sqlite3_step(),在调用sqlite3_prepare后,使用这个函数在记录集中移动.
Sqlite3_close(),关闭数据库文件
还有一系列的函数,用于从记录集字段中获取数据,如
sqlite3_column_text(),取text类型的数据.
sqlite3_column_blob(),取blob类型的数据
sqlite3_column_int(),取int类型的数据