您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 嵌入式系统设计课程--SQLite数据库概述和使用
嵌入式系统设计课程技术报告(2013–2014第2学期)报告题目:SQLite数据库概述和使用专业:自动化班级:姓名:学号:指导老师:电子信息与电气工程系2014年4月制摘要SQLite是遵守ACID[2]的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库。关键词:SQLite概述SQLite使用SQLite发展趋势总结SQLite数据库概述和使用1SQLite简介SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。至今已经有14个年头,SQLite也迎来了一个版本SQLite3已经发布。作为一个开源的嵌入式数据库产品,SQLite具有系统开销小,检索效率高的特性,嵌入式数据库无须独立运行的数据库引擎,它是由程序直接调用相应的API去实现对数据的存取操作。更直白的讲,嵌入式数据库是一种具备了基本数据库特性的数据文件。嵌入式数据库与其它数据库产品的区别是,前者是程序驱动式,而后者是引擎响应式。嵌入式数据库的一个很重要的特点是体积非常小,同时,很多嵌入式数据库在性能上也优于其它数据库,所以在高性能的应用上也常见嵌入式数据库的身影。SQLite是D·理查德·希普开发出来的用一个小型C库实现的一种强有力的嵌入式关系数据库管理体制。SQLite是无数据类型的数据库。虽然在生成表结构的时候,要声明每个域的数据类型,但SQLite并不做任何检查。开发人员要靠自己的程序控制输入与读出数据的类型是正确的。这里有一个例外,就是当主键为整型值时,如果要插入一个非整型值时会产生异常。另外,虽然在插入或读出数据的时候是不区分类型的,但在比较的时候,不同数据类型是有区别的。SQLite提供了对Transaction的支持。应用Transaction即保证了数据的完整性,也会提高运行速度,因为多条语句一起提交给数据库的速度会比一条一条的提交方式更快。1.1SQLite实现了完备的、可嵌入的、零配置的SQL数据库引擎。它的特点包括:1、事务处理是原子的、一致的、独立的和持久的(ACID),即使在系统崩溃和掉电以后。2、零配置,即不需要设置和管理。3、实现了绝大部分的SQL92标准。4、一个单独的跨平台的磁盘文件存储一个完整的数据库。5、支持数据库文件大小至2TB,支持G级别的串和二进制大对象。6、代码量小,即小于30K的C代码行和小于250K的代码空间(gcc在i486上)7、对于绝大多数普通操作来说,比流行的C/S模式的数据库引擎运行速度快。8、API简单、易用。9、数据库文件在机器之间可自由共享。10、自包含:没有外部依赖性。11、字符串和BLOG的大小只受限于可用存储器容量。1.2SQLite的语言绑定可以从C/C++程序中使用这个库,还可以获得对Tcl和一些其他脚本语言的绑定。在CPAN的DBD::SQLite上有一个Perl的DBI/DBD模块,它不是到SQLite的接口,而是包括整个SQLite数据库引擎在其中并不需要任何额外的软件。还有一个Python模块叫做PySQLite。PHP从PHP5.0开始包含了SQLite,但是自5.1版之后开始成为一个延伸函式库。SQLite能与PHP4一起工作但不包含在其中。Rails2.0.3将缺省的数据库配置改为了SQLite3。1.3SQLite的数据类型首先你会接触到一个让你惊讶的名词:Typelessness(无类型)。对!SQLite是无类型的.这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中,无论这列声明的数据类型是什么(只有在一种情况下不是,稍后解释)。对于SQLite来说对字段不指定类型是完全有效的。如:CreateTableex1(a,b,c);诚然SQLite允许忽略数据类型,但是仍然建议在你的CreateTable语句中指定数据类型.因为数据类型对于你和其他的程序员交流,或者你准备换掉你的数据库引擎时能起到一个提示或帮助的作用。SQLite支持常见的数据类型。1.4SQLite的客户端管理SQLite亦可以作为桌面数据库使用,以下为第三方SQLite的GUI软件。例如,SQLiteMan,使用QT开发的一个SQLite客户端,支持多语言、跨平台。SQLiteManSQLiteManager,以火狐浏览器的扩展形式提供的SQLite客户端。SQLiteDatabaseBrowser,agraphicalclienttoaccessSQLitedatabasesSqlProSQLClient,anothergraphicalclienttoworkwithSQLitedatabases。2.SQLite的使用2.1用PHP操作sqlite数据库2.1.1如何连接sqlite数据库?if($db=sqlite_open('mysqlitedb',0666,$sqliteerror)){select*fromsqlite_master;echo数据库连接成功!;}else{die($sqliteerror);}2.1.2如何列出数据库中所有的表?if($db=sqlite_open('mysqlitedb',0666,$sqliteerror)){$result=sqlite_array_query($db,'select*fromsqlite_master;');foreach($resultas$entry){echo'talbename='.$entry['name'].n;echo'sql='.$entry['sql'].n;echo--------------------------------------------------------------------------------;}sqlite_close($db);}else{die($sqliteerror);}}2.1.3对sqlite数据库的查询,以及结果集的显示if($db=sqlite_open('mysqlitedb',0666,$sqliteerror)){$result=sqlite_array_query($db,'selectname,emailfromuser',SQLITE_ASSOC);echouser表查询结果:n;echonnameemailn;foreach($resultas$entry){echo''.$entry['name'].$entry['email'].n;}echo'';sqlite_close($db);}else{die($sqliteerror);}2.1.4数据库对象记录的增加、删除、修改sqlite_query($db,INSERTINTOuserVALUES('user.$i.','user.$i.@hichina.com'));sqlite_query($db,deletefromuserwhereuser=’user99’);sqlite_query($db,'UPDATEuserSETemail=lilz@hichina.comwherename=user1');2.2用JAVA连接SQLite2.2.1先下载SQLite数据库的JDBC这里给出一个中文站点的URL:(参见扩展阅读)将下载到的包解压后得到jar包sqlitejdbc-v033-nested.jar放到%JAVA_HOME%\lib下,并且将其添加到classpath系统环境变量中,我的classpath系统环境变量现在为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\sqlitejdbc-v033-nested.jar在你的代码中引用这个驱动:Class.forName(org.sqlite.JDBC);Connectionconn=DriverManager.getConnection(jdbc:sqlite:filename);//filename为你的SQLite数据名称//...usethedatabase...conn.close();2.2.2示例程序如下:importjava.sql.*;importorg.sqlite.JDBC;/***这是个非常简单的SQLite的Java程序,*程序中创建数据库、创建表、然后插入数据,*最后读出数据显示出来*/publicclassTestSQLite{publicstaticvoidmain(String[]args){try{//连接SQLite的JDBCClass.forName(org.sqlite.JDBC);//建立一个数据库名zieckey.db的连接,如果不存在就在当前目录下创建之Connectionconn=DriverManager.getConnection(jdbc:sqlite:zieckey.db);Statementstat=conn.createStatement();stat.executeUpdate(createtabletbl1(namevarchar(20),salaryint););//创建一个表,两列stat.executeUpdate(insertintotbl1values('ZhangSan',8000););//插入数据stat.executeUpdate(insertintotbl1values('LiSi',7800););stat.executeUpdate(insertintotbl1values('WangWu',5800););stat.executeUpdate(insertintotbl1values('ZhaoLiu',9100););ResultSetrs=stat.executeQuery(select*fromtbl1;);//查询数据while(rs.next()){//将查询到的数据打印出来System.out.print(name=+rs.getString(name)+);//列属性一System.out.println(salary=+rs.getString(salary));//列属性二}rs.close();conn.close();//结束数据库的连接}catch(Exceptione){e.printStackTrace();}}}编译运行:E:\Coding\java\testjavacTestSQLite.javaE:\Coding\java\testjavaTestSQLitename=ZhangSansalary=8000name=LiSisalary=7800name=WangWusalary=5800name=ZhaoLiusalary=9100总结:本文介绍了嵌入式数据库SQLite在Java中的应用,通过创建表、插入数据、查询等操作介绍了在Java中对数据
本文标题:嵌入式系统设计课程--SQLite数据库概述和使用
链接地址:https://www.777doc.com/doc-5040545 .html