*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2014年秋季学期
嵌入式系统课程设计
题目:基于嵌入式Linux系统的嵌入式数据库应用设计
专业班级:12级物联网(01)班
姓名:
学号指导教师:
成绩:
摘要
随着移动计算时代的到来,嵌入式操作系统对移动数据库系统的需求为数据库技术开辟了新的发展空间。嵌入式数据库技术目前已经从研究领域逐步走向了广泛的应用领域。随着移动终端的普及,人们对移动数据的实时处理和管理要求不断提高,嵌入式数据库也越来越显示出其优越性。
本课程设计利用实验室提供的ARM6410试验箱进行相应的设计,主要包括了解Linux环境下搭建嵌入式数据sqlite的基本方法,理解Linux下sqlite的基本使用方法,API接口函数,sqlite语法,掌握C语言编程的实现。
关键词:嵌入式、数据库、sqlite、API接口函数、C语言
前言
数据库的目标是实现对数据的存储、检索等功能。传统的数据库产品除提供了基本的查询、添加、删除等功能外,也提供了很多高级特性,如触发器、存储过程、数据备份恢复等。但实际上用到这些高级功能的时候并不多,应用中频繁用到的还是数据库的基本功能。于是,在一些特殊的应用场合,传统的数据库就显得过于臃肿了。在这种情况下,嵌入式数据库开始崭露头角。嵌入式数据库是一种具备了基本数据库特性的数据文件,它与传统数据库的区别是:嵌入式数据库采用程序方式直接驱动,而传统数据库则采用引擎响应方式驱动。嵌入式数据库的体积通常都很小,这使得嵌入式数据库常常应用在移动设备上。由于性能卓越,所以在高性能的应用上也经常见到嵌入式数据库的身影SQLite是一种采用C语言开发的嵌入式数据库。SQLite的目标是尽量简单,因此它抛弃了传统企业级数据库的种种复杂特性,只实现那些对于数据库而言非常必要的功能。尽管简单性是SQLite追求的首要目标,但是其功能和性能都非常出色。SQLite具有特点1. ACID事务 2. 零配置 – 无需安装和管理配置 3. 储存在单一磁盘文件中的一个完整的数据库 4. 数据库文件可以在不同字节顺序的机器间自由的共享 5. 支持数据库大小至2TB 6. 足够小, 大致3万行C代码, 250K 7. 比一些流行的数据库在大部分普通数据库操作要快 8. 简单, 轻松的API 9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定 10. 良好注释的源代码, 并且有着90%以上的测试覆盖率 11. 独立: 没有额外依赖 12. Source完全的Open, 你可以用于任何用途, 包括出售它 13. 支持多种开发语言,C, PHP, Perl, Java, ASP.NET,Python由于SQLite具有功能强大、接口简单、速度快、占用空间小这样一些特殊的优点,因此特别适合于应用在嵌入式环境中。SQLite在手机、PDA、机顶盒等设备上已获得了广泛应用。
SQLite库可以解析大部分标准SQL语言。但它也省去了一些特性并且加入了一些自己的新特性。SQLite执行如下的语法ALTER TABLE
?ANALYZE
?ATTACH DATABASE
?BEGIN TRANSACTION
?注释
?COMMIT TRANSACTION
?COPY
?CREATE INDEX
?CREATE TABLE
?CREATE TRIGGER
?CREATE VIEW
?DELETE
?DETACH DATABASE
?DROP INDEX
?DROP TABLE
?DROP TRIGGER
?DROP VIEW
?END TRANSACTION
?EXPLAIN
?表达式
?INSERT
?ON CONFLICT子句
?PRAGMA
?REINDEX
?REPLACE
?ROLLBACK TRANSACTION
?SELECT
?UPDATE
?VACUUM
以上只是对SQLite实现的SQL语法的综述,有所忽略。由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这么多的调用接口,核心的API仍然相对简单和便于调用。sqlite3_open()
该接口打开与一个SQLite数据库文件的连接并返回一个数据库连接对象。这通常是应用程序调用的第一个