嵌入式数据库程序设计分析知识讲解.ppt
《嵌入式数据库程序设计分析知识讲解.ppt》由会员分享,可在线阅读,更多相关《嵌入式数据库程序设计分析知识讲解.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式数据库程序设计分析嵌入式数据库概述 1.嵌入式数据库的内涵嵌入式数据库的内涵 嵌入式数据库是一种具备了基本数据库特性的数据文件,它与传统数据库的区别是:嵌入式数据库采用程序方式直接驱动,而传统数据库则采用引擎响应方式驱动。嵌入式数据库的体积通常都很小,这使得嵌入式数据库常常应用在移动设备上。由于性能卓越,所以在高性能的应用上也经常见到嵌入式数据库的身影嵌入式数据库概述 2.嵌入式数据库的特征嵌入式数据库的特征 嵌入性嵌入性 实时性实时性 可靠性可靠性 可定制性可定制性 跨平台跨平台嵌入式数据库概述 3.嵌入式数据库的应用领域及未来趋势嵌入式数据库的应用领域及未来趋势 消费电子及网络设备消
2、费电子及网络设备 军工和航空航天军工和航空航天 工业控制工业控制常用的嵌入式数据库 1.Berkeley DB 嵌入式嵌入式轻便灵活轻便灵活可伸缩可伸缩BerkeleyDB是由美国SleepycatSoftware公司开发的一套开放源码的嵌入式数据库的程序库(databaselibrary),它为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。BerkeleyDB为数据的存取和管理提供了一组简洁的函数调用API接口。它是一个经典的C-library模式的toolkit,为程序员提供广泛丰富的函数集,是为应用程序开发者提供工业级强度的数据库服务而设计的。常用的嵌入式数据库 2.SQ
3、Lite支持ACID事务。零配置而无需安装和管理配置;储存在单一磁盘文件中的一个完整的数据库;数据库文件可以在不同字节顺序的机器间自由共享;支持数据库大小至2TB;足够小,全部源码大致3万行c代码,250KB;比目前流行的大多数数据库对数据的操作要快;独立,没有额外依赖;SQL语言很大程度上实现了ANSISQL92标准。SQLite属于轻量级别数据库,它的源代码是C,其源代码完全开放。SQLite第一个Alpha版本诞生于2000年5月。目前的最新版本是SQLite3.5。SQLite有以下特性:常用的嵌入式数据库 3.eXtremeDB内存数据库混合数据库嵌入式数据库由应用定制的API可预测
4、的数据管理eXtremeDB是美国McObject公司的产品。主要特点:常用的嵌入式数据库 4.Firebird 嵌入式数据库嵌入式数据库 Firebird的嵌入版有如下特色:数据库文件与Firebird网络版本完全兼容,差别仅在于连接方式不同,可以实现零成本迁移。数据库文件仅受操作系统的限制,且支持将一个数据库分割成不同文件,突破了操作系统最大文件的限制,提高了IO吞吐量。完全支持SQL92标准,支持大部分SQL-99标准功能。丰富的开发工具支持,绝大部分基于Interbase的组件,可以直接使用于Firebird。支持事务、存储过程、触发器等关系数据库的所有特性。可自己编写扩展函数(UDF
5、)。常用的嵌入式数据库 5.mSQL嵌入式数据库嵌入式数据库 mSQL(miniSQL)是一个单用户数据库管理系统,个人使用免费,商业使用收费。由于它的短小精悍,使其开发的应用系统特别受到互联网用户青睐。mSQL(miniSQL)是一种小型的关系数据库,性能不是太好,对SQL语言的支持也不够完全,但在一些网络数据库应用中是足够了。mSQL的技术特点:安全性方面,mSQL通过ACL文件设定各主机上各用户的访问权限,缺省是全部可读/写。mSQL缺乏ANSISQL的大多数特征,它仅仅实现了一个最最少的API,没有事务和参考完整性。mSQL与Lite(一种类似C的脚本语言,与分发一起发行)紧密结合,可
6、以得到一个称为W3-mSQL的一个网站集成包,它是JDBC、ODBC、Perl和PHPAPI。SQLite在Linux主机上的安装 先准备好SQLite源码:sqlite-amalgamation-3.5.9.tar.gz解压缩:tarzxvfsqlite-amalgamation-3.5.9.tar.gzC/root/sqlite/for_pc进入sqlite目录:cd/root/sqlite/for_pc/sqlite-amalgamation-3.5.9配置:./configure编译:make安装:makeinstall主要安装了如下文件:/usr/local/include/sqli
7、te3.h/usr/local/include/sqlite3ex.h/usr/local/lib/libsqlite3*/usr/local/bin/sqlite3SQLite shell命令 SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。命令分为两种:用来管理当前数据库的SQL命令,以分号结束。Shell本身的命令,以点开头,主要用来控制数据的显示模式、设置Shell读取和显示数据的方式及其他系统控制。1 sqlite3 启动启动打开名字为打开名字为“ex1”的的SQLite数据库,在终端输入以下命令:数据库,在终端输入
8、以下命令:sqlite3 ex1SQLite shell命令 2 数据库管理命令数据库管理命令在在sqlite提示符下可以输入SQL语句对数据库进行操作和管理。sqlitecreatetabletbl1(onevarchar(10),twosmallint);sqliteinsertintotbl1values(hello!,10);sqliteinsertintotbl1values(goodbye,20);sqliteselect*fromtbl1;hello!|10goodbye|20sqliteSQLite shell命令 3 Shell本身的命令本身的命令(1)常用的显示模式控制命令
9、:.headerON|OFF:设置是否显示数据表格的列名.indicesTABLE:显示表格的所有列名.modeMODE:设置数据表格的显示模式。默认是list,用.separator命令设置的字符串分隔字符(默认是|)。我们比较习惯的是column格式.nullvalueSTRING:当数据为空时,用STRING来填充。默认是空字符串,也就是什么也不显示。.tablesPATTERN:使用PATTERN模式来显示表格.widthNUMNUM.:设置当以column模式显示时,数据显示的宽度.outputFILENAME|stdout:设置数据输出的形式:文件或屏幕的标准输出。.readFIL
10、ENAME:从文件读取SQL语句(2)其他系统控制命令:.databases:显示目前已经匹配的数据库名称.table:显示当前数据库中的所有表.help:显示shell的帮助信息.show:显示shell目前的设置参数.quit和.exit:退出shellsqlite数据库应用程序设计 int main(int argc,char*argv)sqlite3*db;char*zErrMsg=0;int rc;if(argc!=3)fprintf(stderr,Usage:%s DATABASE SQL-STATEMENTn,argv0);exit(1);rc=sqlite3_open(argv
11、1,&db);if(rc)fprintf(stderr,Cant open database:%sn,sqlite3_errmsg(db);sqlite3_close(db);exit(1);rc=sqlite3_exec(db,argv2,callback,0,&zErrMsg);if(rc!=SQLITE_OK)fprintf(stderr,SQL error:%sn,zErrMsg);sqlite3_free(zErrMsg);sqlite3_close(db);return 0;#include#include static int callback(void*NotUsed,int
12、argc,char*argv,char*azColName)int i;for(i=0;iargc;i+)printf(%s=%sn,azColNamei,argvi?argvi:NULL);printf(n);return 0;sqlite数据库应用程序设计 注意:注意:1.编译编译:gcc-I/usr/local/include-L/usr/local/lib-osqlite_testsqlite_test.c-lsqlite32.运行时需要libsqlite3.so.0共享库cp/usr/local/lib/libsqlite3.so.0/usr/lib/SQLite 的API接口 sq
13、lite提供了一些提供了一些C函数接口,可以用这些函数操作数据库。通过使用这函数接口,可以用这些函数操作数据库。通过使用这些接口,传递一些标准些接口,传递一些标准 SQL 语句(以语句(以 char*类型)给类型)给 sqlite 函数,函数,sqlite 就会为你操作数据库。就会为你操作数据库。sqlite 跟跟MS的的access一样是文件型数据库,就是说,一个数据库就是一一样是文件型数据库,就是说,一个数据库就是一个文件,此数据库里可以建立很多的表,可以建立索引、触发器等等,但是,个文件,此数据库里可以建立很多的表,可以建立索引、触发器等等,但是,它实际上得到的就是一个文件。备份这个文件
14、就备份了整个数据库。它实际上得到的就是一个文件。备份这个文件就备份了整个数据库。sqlite不需要任何数据库引擎,这意味着如果你需要不需要任何数据库引擎,这意味着如果你需要 sqlite 来保存一些用来保存一些用户数据,甚至都不需要安装数据库。户数据,甚至都不需要安装数据库。SQLite 的API接口 1关键数据结构关键数据结构 sqlite里最常用到的是sqlite3*类型。从数据库打开开始,sqlite就要为这个类型准备好内存,直到数据库关闭,整个过程都需要用到这个类型。当数据库打开时,这个类型的变量就代表了你要操作的数据库。2打开数据库打开数据库intsqlite3_open(文件名,s
15、qlite3*);用这个函数开始数据库操作。需要传入两个参数,一是数据库文件名。文件名不需要一定存在,如果此文件不存在,sqlite会自动建立它。如果它存在,就尝试把它当数据库文件来打开;sqlite3*参数即前面提到的关键数据结构。函数返回值表示操作是否正确,如果是SQLITE_OK则表示操作正常。相关的返回值sqlite定义了一些宏。具体这些宏的含义可以参考sqlite3.h文件,里面有详细定义。顺便说一下,sqlite3的代码注释率是非常高的。3.关闭数据关闭数据intsqlite3_close(sqlite3*);前面如果用sqlite3_open开启了一个数据库,结尾时不要忘了用这个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 数据库 程序设计 分析 知识 讲解
限制150内