桌面轻量级数据库

1. Access
我们做小项目的时候特别是小的MIS系统一般也都要用数据库来保存数据。经观察大部分的小系统都是用Access数据库,有的系统为了掩盖数据库的类型,把数据文件后缀名改了,其实只要改回到mdb,用Access打开,数据一目了然,其实Access数据库本身有很多的问题:性能不行;数据不安全,用户可以直接用Access打开数据库文件进行数据修改,即使加密后都可以直接破解Access的数据量一大,文件本身的体积就异常庞大;Access数据库文件很容易损坏,我做的一个系统由于意外断电老是当掉,用户的数据几经摧毁。 为了弥补Access的缺陷,我曾经用MySQL数据库代替,但MySQL是网络数据库,安装起来比较复杂。后来在用Python做项目的时候发现了SQLite,真是相见恨晚,SQLite就是Access理想的替代品啊!
2. SQLite
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。特性包括:
事务操作是原子,一致,孤立,并且持久的(ACID),即使在系统崩溃和电源故障之后。
零配置——不需要安装和管理。
实现了绝大多数SQL92标准。

整个数据库存储在一个单一的文件中
数据库文件可以在不同字节序的机器之间自由地共享。
支持最大可达2T的数据库。 (241 字节)
字符串和BLOB类型的大小最大可达 2G 字节(231字节)。
小的代码: 完整配置的少于250KB,忽略一些可选特性的少于150KB。
在大多数常见操作上比流行的客户/服务器数据库引擎更快。
简单,易于使用的API。
内建TCL绑定。 另外提供可用于许多其他语言的绑定。
具有良好注释的源代码,95%经过测试。
独立:没有外部依赖。
源代码位于公共域。 可用于任何用途。
SQLite用的非常广泛,Web应用也都在用它,PHP5都内置了SQLite的扩展,所以SQLite是桌面轻量级数据库的首选。除了Access和SQLite外,还有Firebird等数据库,我觉得SQLite足够小系统使用了。但是SQLite是通用的数据库系统,生成的数据库文件很容易用二进制编辑器打开,打开后文件首部赫然就是“SQLite format 3”,这就暴露了我们的数据文件是SQLite文件,数据库系统是SQLite,只要用SQLite工具打开这个文件就可以看到数据库中的内容了。那为了私密性我们能做哪些工作呢?
3. SQLite定制
我们有时为了私密性,不想让软件用户知道我们使用的数据库系统可以采取不同的加密措施。Access数据库可以设置密码达到保护数据的目的,但是Access的密码保存在Access的数据库文件中,用工具可以很容易的取得数据库的密码,这样我们的数据结构就很容易暴露给别人了。最安全的方法是我们自己编写数据库管理系统这样我们的数据存储格式是私有的别人根本无法知道,这样即使他能看到文件中的二进制数据也没有办法直接看到数据模型的结构。但是,自己做一个数据库管理系统虽然不是太难,无非是存储管理,索引管理,SQL接口等,但如果没有相应的开发经验还是比较费时费力的,那我们能不能用“拿来主义”,用现成的数据库管理系统改造成我们自己的数据库管理系统呢?当然可以。就拿SQLite来说,它是全部开源的,可以从其网站上下载到最新的源代码,然后把源代码修改成我们自己的格式后进行编译就可以了。这对于Linux下的用户来说相当容易,但对于Windows下的不太用VC、BC的开发者来说,配置编译环境,配置导出DLL等操作还是比较费事的,我们就用现成的编译好的文件来修改吧。
用现成编译好的文件进行修改需要二进制的编辑器,推荐使用Ultraedit。为了更好的演示,我们假设用我比较熟悉的Delphi进行开发,用Delphi来访问SQLite可以采用两种方式:一种是用ODBC,SQLite提供ODBC的驱动另外一种采用ASQLite组件进行访问,ASQLite是专门的封装SQLite DLL的组件包,可以在http://www.sqlite.com.cn/Upfiles/source/ASQLite.rar下载。我们选用ASQLite,对于ODBC的方法与ASQLite的类似,我们分步骤完成。
下载SQLite,可以在http://www.sqlitecn.org/download.html下载,我们下载Windows版本的,里面自带一个命令行工具用于建库等数据库操作。
下载ASQLite,并安装到Delphi中。
打开ASQLite的例子程序可以看到SQLite的演示,我们下面的修改以此例子程序为例。
ASQLite是sqlite3.dll的封装,我们要修改的是数据库文件、sqlite3.dll和ASQLite三个地方。修改数据库文件。
数据库文件名为SampleDB,用UltraEdit打开此文件,在最上面可以看到“SQLite format 3”的字样,这是SQLite数据文件的标识,我们只需要修改这部分就可以了,比如修改为“CrazyCom DBEN 6”,最好和原长度一样,不一样的后面一定要改为“00”(十六进制)。修改sqlite3.dll。
修改完上面的数据库文件后,如果这时运行例子程序会出现数据格式不对的提示,所以对sqlite3.dll进行相应的修改。
1)修改文件标识代码
打开sqlite3.dll,查找“SQLite format 3”,找到后改为“CrazyCom DBEN 6”,这样运行例子程序应该正常了。
2)修改函数导出表
我们用DLL、Exe的查看工具如Depend可以看到DLL导出了哪些函数,sqlite3.dll导出的函数都以“sqlite3_”打头的,这就暴露了我们使用的数据库是SQLite了,所以需要修改为不太容易辨识的名字如“crazydb_”打头。要修改首先要找到导出表的位置,在UltraEdit中查找“sqlite3_”,当看到很多字符串都是以“sqlite3_”开始的时候就找到了,具体应该在0x39db8偏移量处。这时如果运行例子程序,例子程序会报异常,因为它找不到相应的函数入口了,所以我们必须修改ASQLite的源文件。修改ASQLite。
ASQLite是对sqlite3.dll的组件化封装,所有的调用还是通过sqlite3.dll实现的,既然我们修改了sqlite3.dll的导出函数接口,我们必须修改ASQLite中和sqlite3.dll的接口部分。接口文件就是ASGSQLite3.pas,打开此文件,找到TASQLite3DB.LoadLibs函数,看到了吧,这个函数加载sqlite3.dll,并找到各个函数。我们只需要修改各个函数的名称就可以了。当然要和sqlite3.dll的导出函数名称对应。
修改完后重新安装ASQLite。
重新编译例子程序,运行正常。到此已经基本完成了修改工作。修改DLL名称。
由于SQLite的DLL名称是sqlite3.dll,很容易让人猜到是SQLite,我们可以把DLL的名字改掉,具体改什么名字可以随意,比如我们改为crazycomdb.dll。改完后要在例子程序中进行对应的修改,即设置TASQLite3DB的DriverDLL = 'crazycomdb.dll'。
4. 总结
本文给出了桌面轻量数据库的选择建议,比较了Access、SQLite两种数据库管理系统,并对定制SQLite数据库管理系统、增强其私密性、安全性提供了详细的步骤,给出了在Delphi下进行SQLite应用的具体例子。没有给出ODBC驱动的相关讨论,不过可以依据本文的方法类比进行。
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
桌面数据库是一款高效的数据库管理与制表平台软件。软件集数据管理、表格制作、富文本编辑为一体,能够实现全方位的数据查询。桌面数据库使用方便,速度快,质量高,对于用户来说是一款很不错的软件,小编这里推荐大家使用这款软件! 64位系统安装注意事项 1、必须以管理员身份安装。 2、如果提示找不到“C:WindowsDownloaded Installations”,可手工建立该文件夹。 桌面数据库安装说明 1、卸载旧版,然后安装新版。 2、卸载前,若使用了《桌面数据库》自带的表,需要备份该表。用户自己建立的表,无须备份。 桌面数据库功能 1、全方位的数据查询: 无论多么复杂的查询,在这里变得十分简单,毋须专业知识,点几下按钮,即可实现。 所有查询结果,均可按需再统计、汇总、打印、导出到Excel。 2、简捷易用的表格制作、打印,功能清晰,最傻瓜型操作,不会用Excel的人,也会很快上手,比Excel易用许多。可以编辑当前表数据,也可以编制任意常规表格(可以插入图片,目前尚不支持曲线图表等)。设计的表格,可以直接打印,也可导出到Excel。 3、完全自由的自动汇总:    想针对哪些项目进行汇总,可由用户自由定制,极为方便。随时可以按年、按季、按月、按日、按分类、按任意条件……进行汇总。 针对复杂交叉的起迄日期进行数据汇总,高度智能。 4、无须再头疼Excel的数据透视表: 各类汇总,点一下按钮,均可导出到Excel。 5、自由定义的自动计算: 操作过程中,所有的自动计算,均可由用户自行确定,并可随时启用。另提供多种直观的计算窗口,满足各类计算需要(包括复杂计算,不需要数学知识)。 提供库存、账务结余类的专用计算函数,可实现原库存、现库存、金融平账等自动计算。 其他自动计算如:宾馆入住结算、学分计算、餐饮结算、即时销售(有销售专用窗口)、财务……均可有效处理。 6、强劲的事项提醒: 想要提醒的事项,任意指定。 7、图片、文本的自动对号批量导入: 这对于一些需要使用图片的管理(如学籍管理、房产中介、司法案例……),十分方便。文本文件,亦可对号导入。 8、数据内容自由克隆(包括框选数据),可以粘贴到Excel、Word任何位置,不再受Officel版本变化的限制。 9、字符数据的多方位处理,独辟蹊径。 10、数据录入时,可以自动填值。表格中录入数据,右键点击单元格,可呼出词库,省去输入多个汉字的麻烦。  11、快捷的简易打印(包括二联单打印。自由设置格式,保存后可自动启用)、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 桌面数据库截图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮特大熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值