加入收藏
 

检验仪器中的SQLite数据库编程

  本文说明相关:lSSN1009—3044ComputerKnowledgeandTechnology电脑知识与技术V01.6,No.8,March2010,PP.1797—1799检验仪器中的SQLite数据库编程杜慧江(上海医疗器械高等专科学校,上海200093)E-mail:jsh@ceee.net.crlhttp://www.dnzs.net.cnTel:+86-551-56
    lSSN1009—3044ComputerKnowledgeandTechnology电脑知识与技术V01.6,No.8,March2010,PP.1797—1799检验仪器中的SQLite数据库编程杜慧江(上海医疗器械高等专科学校,上海200093)E-mail:jsh@ceee.net.crlhttp://www.dnzs.net.cnTel:+86-551-56909635690964摘要:SQLite是开放源码的基于文件系统的嵌入式关系数据库,具有体积小、快速高效、稳定可靠、夸平台等特点,非常适用于嵌入式环境下的数据管理。该文结合具体实例,介绍了将SQLite应用于医用检验分析仪器开发。在ax'/n嵌入式Linux及QTEmbeded环境下的编程方法。关键词:嵌入式数据库:SQLite:检验仪器中图分类号:TP311文献标识码:A文章编号:1009—3044(2010)08—1797-03SQLiteProgramminginLaboratoryAnalyzerDUH11i-jiang(shan咖aiMedicalImtrumentatinnCollege,Shan曲ai200093,China)Abstract:SQLiteisanopenSOUrCeembeddedrelationdatabaseengine.Ithassmallsize,highperformance,robustnessandportabilityfea-mres.Indaispaper,SQLiteWasapphedtodevelopinghboratoryanalyzer.ThedevelopingmethodinARMembeddedClinuxandQTplatformisintroducedandadetailedexampleisgivenforpresentation.Keywords:embeddeddatabase;SQLite;laboratoryanalyzer随着嵌入式技术的广泛应用,医学检验仪器在不断向小型化、智能化方向发展,功能越来越多,数据量也越来越大。有些检验仪器以前不需要保存历史数据,现在更新换代的需求要求保存一定数最的历史数据;特别是功能复杂的精密仪器,在开发过程中,各种部件的指令、动作大量增加。这些仪器都迫切需要适合嵌入式平台的数据库技术作为支撑.完成开发工作。l嵌入式关系数据库SQLiteSQLite是一个小型嵌入式关系数据库,它是完全独立的,非常容易被应用于嵌入式系统中。
  其源代码公开,可以免费用于包括商业目的的任何用途:目前已经更新到3.6.17版本。虽然是非常轻量级的数据库系统,SQLite却支持绝大多数SQL92标准,支持多表和索引、事务、视图、触发,以及一系列的用户接口、驱动。其主要特征如下【1】:1)支持原子的、独立的和持久的事务特性,即使系统崩溃和掉电;2)零配置。无需安装和管理;3)一个完整的数据库存储在单一的磁盘文件中;4)数据库文件可以在不同字节顺序的机器间自由共享;5)支持数据库大小至2TB;6)字符串和二进制大对象(BLOB)的大小仅被有效内存限制;7)源代码体积小,编译后不超过300k;8)操作速度快:9)API简单易用。2SQLite内部结构和开发技术2.1SQLite内部结构SQLite采用模块化设计,主要由4个部分构成:内核(Core)、SQL编译器(SQLCompiler)、后端(Baekend),以及附件(Acces—sories)oSQLite的接口是一些已经编写好的c库。可以使用各种语言调用。SQL语句通过接口进入SQL编译器,由标记处理器分解成可以识别的各种标识符。然后由分析器重新组合标识符并调用代码生成器,生成虚拟机器码,交由虚拟机执行,最终完成SQL语句指定的任务。虚拟机是SQLite内部结构的核心。不仅完成与数据相关的全部操作,而且还是客户和存储之间信息交换的中间单元。
  数据库以B树(B—Tree)的形式存储在磁盘上,通过可调整的页面缓冲获得对数据的快速查找和存储。为了方便移植,SQLite使用一个抽象层接口与不同操作系统进行对接。2.2SQLite开发技术以SQLite3.5.9版本C语言的API接口闭为例:收稿日期:2010—01—16作者简介:杜慧江(1975-),男,山西阳泉人,讲师,硕士,主要研究方向为数据库、嵌入式系统。本栏目责任编辑:闻翔军一-一一·一一·数量库与信息蕾曩··1797ComputerKnowledgeandTechnology电蓝知识与技术第6卷第8期(2010年3月)1)打开数据库intsqlite3_open_v2(constchar*filename,严数据库文件名(IJTF一8)4,sqlite3料ppDb,产输出:SQLite数据库句柄木/intflags。
  严互斥标志}/constchar*zVfsp使用的VFS模块名称木/);在新版SQLite中建议使用sqlite3_open_v2替代旧的sqlite3_open,但是为了兼容113的应用,依然保留了sqlite3open(以下其他函数类似osqlite3_open_.v2函数的第一个参数为要打开的数据库文件名;第二个参数为返回的数据库句柄:第三个参数是互斥标志.通常为SQLITEOPEN_READONLY、SQLITE_OPEN_READWRITE和SQLITE_OPEN_READWRITEISQLITE_CIPEN_CREATE这三个值与SQLITE_OPEN—NOMUTEX或者SQLIrrE—OPEN_FULLMUTEX这两个值的组合。第四个参数是要使用的VFS模块名称,如果使用当前系统默认的文件系统,可以使用NULL。
  2)关闭数据库intsqlite3_close(sqlite34);参数就是打开时返回的SQLite数据库句柄。3)执行SQL语句sqlite3_exec0函数是为了使用方便而设的。如果在需要高效或者重复大量执行SQL语句,就应该使用sqlite3_prepare0、sqlite3_step0、sqlite3_column0和sqlite3_finalize0等函数。SQL语句在执行之前,必须被编译成字节码送到虚拟机执行.sqlite3_pre-pare_v20就是完成这个工作:intsqlite3_preparev2(sqlite3*db./宰数据库句柄木/eonstchar+zSql,严SQL语句(UTF-8)+,intnByte,pSQL语句最大字节数+,sqlite3一strut**ppStmt,/木输出数据集。,constchar料pzTailpSQL语句中未用的部分·,);sqlite3一step(sqlite3_stmt4)用来执行已经过prepare的SQL语句。如果执行的是查询语句,则返回SQLITE—ROW表明得到了一行数据;再次执行sqlite3一step0,返回查询结果的下一行。如果执行的不是查询语句,则返回SQLITE_DONE或者SQLITE—ERROR。sqlite3_column0函数负责从查询结果数据集中取出当前行某一列的值。实际上它包括了一组对应不同数据类型的函数:sqlite3_column_blob0、sqlite3_column_bytesO、sqlite3column_text0、sqlite3_column_double0、sqlite3_column_int0等。经过sqlite3_pre-pare过的SQL语句若不再使用,应该用sqlite3_finalize0使该语句作废。
  3SQLite在检验仪器开发中的应用作者参与开发的某检测仪以ARM2440为硬件平台,通过FPGA连接若干步进电机、泵等设备;以Linux2.6.29为操作系统,用QTEmbedded作为开发语言。主要功能是通过注射器加注样品到检测器,通过光电检测,读取每个样品的测试值,生成检验报告:此外还有一些辅助设备如除气装置等部件。在开发过程中,把所有的动作参数存储到一个动作库中,可以大大方便调试修改动作参数,加快开发进度。下面以注射模块的参数修改保存功能为例说明。首先在主程序的开始处。
  检测用户存放动作的数据库文件是否存在。并打开。
  intmain(intargc,char4+argv){QApplicationapp(argc,argv);intreteode;retcode=sqlite3_open_v2(”par.db”,&serbase.db,SQI_JTE_OPEN—READWRITE,o);if(retcode!=SQLITEOKl{sqlite3_close(serbase.db);std::cout<<”Couldnotopenpar.db\Il”<eurrentText0,-1传奇的,0);while(sqlite3一step(stmtl)==SQLITERO聊{LineEdit_diluVol->setText(QString(”%l”).arg(sqlite3_column_int(stmtl,0)));LineEdit—Pos—Z->setText(QString(”%1”).arg(sqlite3_column_int(stmtI,1)));LineEdit_Inj_Spd->setText(QString(”%l”).arg(sqlite3_column_int(stmtl,2)));LineEdit_lnj—Delay->setText(QString(”%l”).arg(sqlite3_column_int(stmtl,3)));J)如果修改了相关参数值。
  可以将其存人数据库中。同样先构造SQL语句。
  voidSyringe::PushButton_Save_clicked0{stmt2=O:QStringst2=”updatesyringe_parsetdiu_vol=:pl,pos_z=:p2,inj_spd=:p3,inj_delay2:p4wheretest_name=:p5”;retcode=sqlite3_prepare—v2(serbase.db,st2,一l,&stmt2,咄if(retcode资料!=SQurIE—DK){sqlite3一elose(serbase.db);std::cout<<”CouldnotexecuteUPDATE”<text0.toInt(&ok,10));sqlite3一bindint(stmt2,2,LineEdit—Pos—Z->text0.toInt(&ok,10));sqlite3_bind—int(stmt2,3LineEdit—Inj_Spd->text0.toInt(&ok,10));sqlite3一bind_int(stmt2,4,LineEdit_lnjectionDelay->text0.toInt(&ok,1o));sqlite3一bindtext(stmt2,5,ComboBox—TestName->currentText0,一1'0);if(sqlite3_step(stmt2)==SQLITE—DONE)QMessagebox::information(”saveok”);elseQMessagebox::information(”saveerror[”);}最后,在程序退出部分关闭数据库:sqlite3_close(serbase.db);4结论作者参与开发的检测仪中,SQLite数据库操作代码迄今工作稳定良好、即将投入使用。嵌入式数据库SQLite以其开源夸平台、占用资源少、快速高效,具有多种易用的编程接口等特点,非常适用于检验仪器的软件开发,也将会得到更广泛的应用。参考文献:【1】庄宗辉,薛毓强,连瑞红.嵌入式数据库SQHte在远程监控系统中的应用【J】.现代电子技术,2007.8:62-64.【2】AnIntroductionToTheSQLiteC,C++Interface[CP】.http://www.sqlite.org/cintm.html.【3】万玛宁,关永,韩相军.嵌入式数据库典型技术SQLte和BerkeleyDB的研究叨.微计算机信息,2006:1-2,91-92.【4】MichaelOwens.%eDefinitiveGuidetoSQLite[M].Apress,2006.【4】胡伟.SQLite在嵌入式系统上的实现研究[J】.计算机与数字工程,2009.2:46—47.[5】兰艳桃,刘琳.SQLiteODBC接口在ARM-Linux平台的实现【J】.电脑知识与技术,2009.16:3-5.【6】曾立胜.基于嵌入式数据库SQLite的射频卡数据存储【J】.电脑知识与技术,2006.3:3,28.本栏目责任编辑:闻翔军---一--一-敦墨摩与信息蕾曩·-1799检验仪器中的SQLite数据库编程作者:杜慧江,DUHui-jiang作者单位:上海医疗器械高等专科学校,上海,200093刊名:电脑知识与技术英文刊名:COMPUTERKNOWLEDGEANDTECHNOLOGY年,卷(期):2010,6(8)参考文献(7条)1.MichaelOwensTheDefinitiveGuidetoSQLite20062.万玛宁;关永;韩相军嵌入式数据库典型技术SQLite和BerkeleyDB的研究[期刊论文]-微计算机信息2006(2)3.AnIntroductionToTheSQLiteC/C++Interface4.曾立胜基于嵌入式数据库SQLite的射频卡数据存储[期刊论文]-电脑知识与技术2006(03)5.兰艳桃;刘琳SQLiteODBC接口在ARM-Linux平台的实现[期刊论文]-电脑知识与技术2009(16)6.胡伟SQLite在嵌入式系统上的实现研究[期刊论文]-计算机与数字工程2009(02)7.庄宗辉;薛毓强;连瑞红嵌入式数据库SQLite在远程监控系统中的应用[期刊论文]-现代电子技术2007(08)。-此篇传奇文章来自我站原创编辑!
上一篇:冲突法上的修正问题研究 下一篇:电脑验光仪辅助YAG激光断线控制小切口非超乳白内障术后散光
  本文私服合击相关文章
  • 实践是学习音乐的最好手段
  • 浪漫三选一影展 首部曲 《精选完美男》珍妮佛安丝顿借
  • 你累吗了?喝了再上!《问道》中国首款游戏专属饮料上
  • 纺织品的容许色差
  • 迪士尼经典动画‘公主与青蛙’在《天使之恋2》与你相
  • 休闲类型游戏抬头 中国网游产值将达92亿美元
  • 韩国学者把字句研究概况
  • 乐奇旺旗下游戏齐拜年 推出系列贺岁迎新春活动
  • 爱情与财富消逝在网中
  • 即时动态战斗画面 策略经营WEB GAME《领主》8月15日全
  • Copyright 2009-2011 By www.vipcqsf.com All Right Reserved 本站版权所有. 传奇合击私服网 权威资料与开区发布.
    本站提供国内真正专业信誉可靠的传奇SF英雄合击版本服务.完全免费的技术服务.ICP备/经营许可证09098433号