(1)当用户浏览NAS系统中的媒体文件时,执行DatabaseOpen数据库打开操作。
(2)接着查找当前的SQLite数据库表,得到媒体文件的路径,通过DatabaseExecute执行SQL 查询语句得到路径。
(3)通过媒体文件的路径打开媒体文件,把媒体文件,通过UPnP网络发送出去。SQLite的特点决定了它与应用结合时的便捷性。作为数据的存储介质,SQLite文件被保存为一个普通的磁盘二进制文件,它无需一个服务器进程来提供服务,对SQLite数据文件的直接操作即可完成想要做的工作。结合应用需求,在应用层编写了一组对SQLite的API调用操作的简单封装,部分封装函数如下::
DatabaseOpen ;调用SQLite_open打开数据库文件
DatabaseClose ;调用SQLite_close关闭数据库
DatabaseExecute ;执行SQL命令
应用层的部分封装函数的实现代码如下::
int DatabaseOpen ( struct DBObj3 db, const char3 dbName)
{
char3 pzErrMsg = NULL;
structDB Info3 pDB info; / /数据库文件指针
if (NULL = = dbName) return 1;
pDBinfo = ( struct DB Info3 ) db - > priv;
pDBinfo - > stConnect = ( struct sqlite3 ) sqlite_open ( dbName, 0777, &pzErrMsg) ;
if ( NULL = = pDB info - > stConnect )
{
printf ( " db open error. " ) ;
return 1;
}
return 0;
}
int DatabaseExecute ( struct DBObj3 db, const char3 szSQL)
{
char3 pErrMsg = NULL;
int nErrorCode;
struct DB Info3 pDBinfo;
pDB info = ( structDB Info3 ) db —> priv;
nErrorCode = sqlite_exec ( ( struct sqlite 3 )(pDBinfo - > stConnect) ,
szSQL, NULL, NULL, &pErrMsg) ;
return nErrorCode;
}
可以看出,各个封装函数是通过调用SQLite的API函数实现的。在基于Linux操作系统上使用SQLite,经测试嵌入式数据库响应迅速,运行稳定,用户基本感觉不到命令延迟,在浏览声音和图像媒体时流畅自然,充分验证了使用SQLite数据库的优越性。
5 总结
在经过大量的分析对比之后,针对嵌入式系统开发的特点,从众多数据库发行版中选出非常适用的嵌入式数据库SQLite。ARM-Linux下完成了对SQLite的编译,并基于此在项目中作了进一步的开发工作。实践证明,SQLite能够出色地完成嵌入式系统中的数据库应用需求。
参考文献
[1] 谭爱国,琚长江,余 涛.SQLite在基于L inux的Media NAS系统中的应用[J]。武汉理工大学学报:信息与管理工程版, 2007, 29 (6)
[2] 曾立胜. 基于SQL ite嵌入式数据库的射频卡数据存储[ J ]. 电脑知识与技术, 2006 (8)
[3] 倪天龙,张贤高,王培.数据库SQLite在嵌入式系统中的应用[ J ]. 单片机与嵌入式系统应用, 2005 (10) : 35 - 37.
[4] 万玛宁. 嵌入式数据库典型技术SQLite和Berkeley DB的研究 [J]. 微计算机信息,2006/02
[5] 王冠宇. JAVA在SQLite嵌入式数据库中的应用 [J]. 微计算机信息,2006/02
上一篇:车载多媒体的嵌入式处理方案