嵌入式数据库SQLite在电梯BS监控中的应用_第1页
嵌入式数据库SQLite在电梯BS监控中的应用_第2页
嵌入式数据库SQLite在电梯BS监控中的应用_第3页
嵌入式数据库SQLite在电梯BS监控中的应用_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    嵌入式数据库SQLite在电梯B/S监控中的应用        陈 新,高凤梅,曹玲芝,石 军, 时间:2008年05月29日     字 体: 大 中 小        关键词:        摘要:关键词:1 SQLite数据库简介SQLite是由D.Richard

2、Hipp于2000年编写的执行自容纳、可嵌入、零配置数据库引擎的小型C库。它支持多数SQL92标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。其作为PHP V4.3中的一个选项引入,已构建在PHP V5中,比MySQL快2倍以上,且完全开放。SQLite虽然比Berkeley DB功能稍弱,但是Berkeley DB不支持SQL,体积比SQLite大,在某些商业应用上不是免费的,况且在开源社区的推动下SQLite的功能在增强,因此SQLite正在成为受欢迎的开源数据库之一。嵌入式数据库来自于其嵌入式运行模式,它使用精简代码编写,零配置,直接在应用程序进程中运行,并且占用资源非常

3、少。嵌入式数据库系统没有管理员,具有自调节和自适应能力,能够“无处不在”。SQLite是一个非常适合嵌入式应用的数据库,这可以从其设计的目的和独特的特点看出。SQLite设计的主要目的是简单:简单的管理、简单的操作、简单地嵌入、简单的维护。SQLite的特征如下:(1)零配置。SQLite在使用前不需要安装设置,不需要进程来启动、停止或配置,不需要管理员去创建新数据库或分配用户权限,在系统崩溃或失电之后自动恢复。(2)无服务器。大多数SQL数据库引擎是作为一个单独的服务器进程被执行。访问数据库的程序使用某种内部进程通信(典型的是TCP/IP)与服务器通信,完成发送请求到服务器和接收查询结果的工

4、作。SQLite不采用这种工作方式。使用SQLite时,访问数据库的程序直接从磁盘上的数据库文件读写,没有中间的服务器进程。(3)精简性。当尺寸优化后,在不减少功能的情况下,整个SQLite库小于225KB。如果在编译时去掉一些不需要的特性,库的大小能被减小到170KB。IBM最新发行的CloudScape数据库引擎是2MB的罐文件,压缩后仍比SQLite大10倍;Firefox宣称其客户订制的库只有350KB,但是不包括数据库引擎;来自Sleepycat的Berkeley DB库是450KB,并且删去了SQL支持。通过比较可知:SQLite非常小。(4)简单的访问。一个SQLite数据库是一

5、个单独的普通磁盘文件,能够被定位在路径层次的任何地方。如果SQLite能读写磁盘文件,则它也能访问数据库。大多数SQL数据库引擎趋向于把数据存为一个大的文件集合,通常这些文件在一个标准的定位中,只有数据库引擎本身能访问它。(5)可变长度的记录。一般的SQL数据库引擎在表中为每一个记录分配一个固定的磁盘空间数,SQLite只使用一个记录中实际存储信息的磁盘空间数。显然,这会使数据库非常小,同时,由于在磁盘上移动的信息很少,也使数据库很快。SQLite不仅小、快,而且简单、可靠,这是它受欢迎的主要原因。对于嵌入式场合,管理、执行、维护的简单化比企业数据库引擎提供的许多复杂应用更重要,因此SQLit

6、e数据库是一个很好的选择。本监控系统分为两层:嵌入式终端、远方楼宇中心或电梯公司的监测中心。监控软件的主要功能是:与电梯通信接口通信,采集电梯运行状态和故障数据并存入数据库;对故障报警优先处理,自动发短信至维保人员手机,并将现场数据实时存入数据库,以便进一步故障分析和统计。数据库成为连接前后台的中间件,存储状态数据供B/S远程监控和本地LCD显示,同时接收浏览器和本地键盘输入,由通信程序、CGI程序完成控制命令的下传及运行状态的上传;同时数据库还实现故障的分析统计和查询。软件程序主要分为四个模块:与电梯接口的CAN/RS485通信程序,GPRS故障报警程序,本地的人机交互程序,远程B/S监控程

7、序。3 嵌入式数据库SQLite的应用3.1 SQLite的C语言API函数嵌入式数据库SQLite的C语言API以下面三个核心函数为基础:sqlite*sqlite_open(const char*dbname,int mode,char*errmsg);void sqlite_close(sqlite*db);int sqlite_exec(sqlite*db,char*sql,int(*Callback)(void*,int,char*,char*),void*parg,char*errmsg);其中,前两个函数用于打开与关闭数据库,sqlite_exec函数用来处理SQL查询,它含有五

8、个参数:(1)调用sqlite_open函数获得的数据库结构的指针。(2)容纳了一个或更多SQL语句的字符串。(3)指向Callback函数的指针,查询结果的每一条记录都调用该函数。(4)成为Callback函数第一个参数的指针。(5)指向错误串的指针。其中,Callback函数由用户编写,用来接收查询结果,查询结果的每一条记录都会调用Callback函数一次,其原型为:int Callback(void*pArg,int argc,char*argv,char*columnNames)return 0;其中,第一个参数接收客户代码的任意信息;第二个参数是字段数;第三个参数是一个字符串数组,每

9、一个串是记录的一个字段值;第四个参数是字段名。Callback函数是用户根据应用编写的,正常应返回0。如果Callback函数非0,则查询失败。此外,一些扩展的API提供了有用的接口函数。这里着重介绍sqlite_exec_printf( )。int sqlite_exec_printf(sqlite*,char*sql,int(*)(void*,int,char*,char*),void*,char*errmsg,);它与sqlite_exe一样执行同样的查询功能,但采用printf-style格式的字符串代替完整的SQL语句。作为第二个参数,这个格式串产生SQL语句,并且在函数结尾可以绑定

10、任意参数。使用sqlite_exec_printf函数的好处是:(1)sqlite_exec_printf为了容纳产生的SQL语句,通常会分配足够的缓存,因此不会产生静态缓存溢出的危险;(2)扩展了%Q和%q两个新格式以支持SQL中的串值。3.2 SQLite在电梯监控中的应用在电梯的B/S监控中,电梯的运行状态需要在浏览器端实时显示,实时记录故障信息,并能统计查询,同时通过客户浏览器进行一些控制和参数设置。因此对数据库的访问有上端的以太网通信程序和下端的CAN/RS485通信程序。这里着重讨论以太网通信程序。下面以电梯故障查询中CGI程序访问数据库为例说明SQLite数据库Callback函

11、数、API函数的用法。Callback函数编写如下:int fault_dis(void*p_data,int fields_count,char*p_fields,char*p_columnN)int *p=malloc(sizeof(int);p=(int*)p_data;(*p)+;printf(trn);printf(tddiv align=centerspan class=style7 %s /span/div/tdn,p_fields0);printf(td class=style7div align=center%s/div/tdn,p_fields1);printf(td he

12、ight=58div align=center class=style7%s/div/tdn,p_fields2);printf(tddiv align=centerclass=style7%s/div/tdn,p_fields3);printf(tddiv align=centerclass=style7%s/div/tdn,p_fields4);printf(/trn);return 0;C语言编制的CGI程序中用SQLite的API函数调用Callback函数的关键语句为:int*precs=malloc(sizeof(int);char*errmsg=malloc(100);char*q0=malloc(10);sqlite*p_elevator=sqlite_open(elevator,777,0);/*打开数据库*/sqlite_exec_printf(p_eleva

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论