您当前的位置:首页 > 计算机论文>软件开发论文

JAVA在SQLite嵌入式数据库中的应用

2016-04-01 09:37 来源:学术参考网 作者:未知

  1引言

  通常我们采用各种数据库产品来实现对数据的存储、检索等功能,例如,Oracle,SQLServer,MySQL等等。这些产品除提供基本的查询,删除,添加等功能外,也提供了很多高级特性,如触发器,存储过程,数据备份恢复,全文检索功能等。但实际上,很多的应用,仅仅利用到了这些数据库产品的基本特性而巳。

  而且在一些小型应用上,或者某些特殊场合的应用,比如桌面程序,这些数据库产品就明显有一些臃肿。在这些情况下,嵌入式数据库的优势就特别明显了。

  嵌入式数据库无须独立运行的数据库引擎,它是由程序直接调用相应的API去实现对数据的存取操作。更直白的讲,嵌入式数据库是一种具备了基本数据库特性的数据文件。嵌入式数据库与其它数据库产品的区别是,前者是程序驱动式,而后者是引擎响应式。嵌入式数据库的一个很重要的特点是它们的体积非常小,编译后的产品也不过几十K。这不但对桌面程序的数据存储方案是一个很好的选择,也使得它们可以应用到一些移动设备上。同时,很多嵌入式数据库在性能上也优于其它数据库,所以在高性能的应用上也常见嵌入式数据库的身影。

  下面介绍的是开放源代码的嵌入式数据库,SQLite。同时侧重研宄如何应用Java连接SQLite数据库,并开发基于SQLite的应用程序。

  2SQLite简介

  SQLite是D?理查德?希普开发出来的用一个小型C库实现的一种强有力的嵌入式关系数据库管理体制。它提供了对SQL92的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。

  SQLite实现了完备的、可嵌入的、零配置的SQL数据库引擎。它的特点包括:

  1.事务处理是原子的、一致的、独立的和持久的(ACID),即使在系统崩溃和掉电以后。

  2.零配置,即不需要设置和管理。

  3.实现了绝大部分的SQL92标准。

  4.一个单独的磁盘文件存储一个完整的数据库。数据库文件在机器之间可自由共享。

  5.支持数据库文件大小至2TB.

  6.字符串和BLOG的大小只受限于可用存储器容量.代码量小,即小于30K的C代码行和小于250K的代码空间(gcc在i486上)

  9.对于绝大多数普通操作来说,比流行的C/S模式的数据库引擎运行速度快。

  10.API简单、易用。

  可以看出,基于以上特点,SQLite非常适合应用于嵌入式移动数据库。SQLite的版权允许无任何限制的应用,包括商业性的产品。SQLite官方主站上可以下载到编译后的SQLite程序。

  3建立SQLite数据库

  SQLite是无数据类型的数据库。虽然在生成表结构的时候,要声明每个域的数据类型,但S"Lite并不做任何检查。开发人员要靠自己的程序控制输入与读出数据的类型是正确的。这里有一个例外,就是当主键为整型值时,如果要插入一个非整型值时会产生异常。另外,虽然在插入或读出数据的时候是不区分类型的,但在比较的时候,不同数据类型是有区别的。比如!

  CREATETABLEMyTable(aINTEGER,bTEXT);INSERTINTOMyTableVALUES(0,0);

  当执行下面的查询:

  SELECTcount(*)FROMMyTableWHEREa=='

  00-;

  会返回一条记录,因为字段a的类型是整型,而数字00与0是相等的。而执行下面的查询则不会返回记录!

  SELECTcount(*)FROMMyTableWHEREb=='00-;

  因为字段b是字符类型,字符"00"与"0"是不相等的。

  SQLite提供了对Transaction的支持。应用Transaction即保证了数据的完整性,也会提高运行速度,因为多条语句一起提交给数据库的速度会比一条一条的提交方式更快。

  SQLite库包括一个简单的命令行工具,该工具名称对应S"Lite-3_2_2版本叫做sqlite3,用户使用这个工具可以对一个S"Lite数据库手工输入和执行S"L命令。例如建立一个名叫wgy的S"Lite数据库,并建立个名叫user的表的步骤如下:

  Sqlite3wgy

  SQLiteversion3.2.1

  Enter".help"forinstructions

  sqlite>createtableuser(usernamevarchar(10),passwordvarchar(10));

  sqlite〉insertintouservalues(,Marry,,’111111,);sqlite〉insertintotbl1values(,Helen,,&222222,);sqlite〉select*fromuser;

  Marryl111111

  Helenl222222

  Sqlite〉

  用户结束操作只需按CTRL+C组合键。注意每条SQL命令后要加分号。

  用户可能对命令行方式的操作感到不直观,不太容易使用。那么用户可以使用S"LiteDatabaseBrowser软件,这是一个免费的、公用域的、开源的可视化工具,可以用来建立、编辑S"Lite数据库文件。这就意味着用尸可以不必学习复杂的S"L命令,而直接使用熟悉的可视化图形界面设计、编辑S"Lite数据库。用户可从<http://sqlitebrowser.sourceforge.net/>下载该工具软件。

  4SQLite的第三方JAVA接口

  SQLite源代码是C,而且官方网站上只提供了C和Tcl语言的接口。为了应用Java接口,要采用第三方的接口驱动程序,可在<http://www.ch-werner.de/>javasqlite中找到这个Java接口程序。这个接口提供了两种连接SQLite的方式:一是直接用JNI技术调用SQLite的C语言接口,这种方式要求开发人员要对SQLite本身的API也有一定的了解。在第二种方式中,接口程序实现了Java标准规范的JDBC接口,这样开发人员只要对JDBC有了解就可以了。

  第三方接口库中的Java代码包含JNI接口和多个版本的JDBC接口程序,可根据你的JRE的版本选择相应的JDBC程序。Java类包加上Sqlite_jni.dll文件,组成了SQLite的Java接口库,在应用Java语言调用JDBC或JNI接口时,都是通过应用Java的本地化技术调用Sqlite_jni.dll文件,完成对S"Lite数据库的操作。

  4.1应用JNI直接调用S"Lite功能

  下面这段代码演示如何应用JNI接口操作SQLite。可以看到Database类的exec()方法是执行S"L语句的关键:

  Databasedb=newDatabase();

  try{

  //打开数据库

  db.open("c:\\temp\\mydata.slt",0666);db.interrupt();db.busy_timeout(1000);db.busy_handler(null);

  db.exec("createtableaccount(namevarchar(10),galeboolean)",result);

  db.exec("insertintoaccountvalues(-steve-,-m-)",result);

  db.exec("select*fromaccount",result);//关闭数

  据库

  db.close();

  }catch(Exceptione){e.printStackTrace();

  }

  4.2应用JDBC连接SQLite

  用户一定要保证在类路径class_path中有“sqlite.jar",并且保证在你的JAVA库路径JAVAlibrarypath中有本地库nativelibrary。用"SQLite.JDBCDriver"作为JDBC的驱动程序类名。连接JDBC的URL格式为jd-bc:sqlite:/path。这里的path为指定到SQLite

  3控制系统软件设计

  控制系统软件负责信号的采集、解算和控制等工作。在编写软件时,采取模块化设计的原则,把功能相对独立的程序做成子程序供其它程序调用。由于用c语言编写程序层次明了,系统控制软件大部分采用c语言编写。

  遥控机器人平台控制系统程序主要有两部分组成,即主程序和串口中断程序。流程图分别如图4、图5所示。

  当单片机收到数传模块数据后将触发串口中断进入串口中断程序。

  4结论

  本设计系统体积小,重量轻。通过实验验证,系统的人机交互能力较强,运行稳定可靠,控制灵活反应迅速,达到预期的设计要求。在以后的研宄工作中,通过安装传感器测量车轮的转速,从而使操纵人员更清晰地得到遥控机器人平台的反馈,使本系统更具有良好的社会和经济应用前景。


相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页