SQLite移动嵌入式数据库BLOB类型应用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQLite移动嵌入式数据库BLOB类型应用

SQLite移动嵌入式数据库BLOB类型应用   在对移动嵌入式数据库中BLOB数据类型分析的基础上,使用C语言的API函数调用移动SQLite数据库语句,并按其访问模式调用连接函数,实现了SQLite移动数据库中二进制大对象和C结构体类型数组的BLOB处理方法。随着图像和音视频数据的日益增多,BLOB数据类型在SQLite中的应用将更为广阔,给出的Demo实例验证了这一技术的有效性。   SQLite移动数据库 BLOB类型 嵌入式开发   中图分类号:TP311 文献标识码:A 文章编号:1006-1010(2014)-06-   1 引言   移动嵌入式数据库一直是一个热点应用开发,作为轻量级嵌入式移动数据库的典型,SQLite有许多令人印象深刻的优点,包括:具有开放源代码;自身程序特别小;支持大多数SQL命令;速度极快;直接创建数据库,不需要服务器支持;简洁的C语言API(Application Programming Interface,应用程序编程接口)接口。它具有的零配置安装可在系统崩溃或电源故障时自动恢复,且数据被存储在单一的物理文件中,数据库运行在同一个相互间无通信的进程,访问数据库的程序直接从文件读取和写入磁盘,数据的读写速度快,具有高达2TB的存储容量,在提供了存储BLOB(Binary Large Object,二进制大对象)方法的同时,API扩展等也提供了强有力的技术支撑;存储在SQLite数据库BLOB数据类型的输入数据无需任何转换,数据本身的属性就是表的列属性[1]。   2 BLOB技术原理   BLOB数据类型是适合用于存储可变长度的二进制大对象数据以及可变长度的音频和视频数据。在SQLite的BLOB类型中存储复杂的数据时,长度是不加限制的[2]。使用B-树索引来管理和组织属性数据,通过SQL语句到数据库相关数据中实现增、删、改、查的操作。SQLite不支持静态数据类型,而是使用列关系。当数据记录的字段内容插入到数据库中时,SQLite将对该字段内容的类型做检查,若类型不能匹配到相关联的列,则SQLite会将该字段内容转换成列的类型。因此,数据库中BLOB数据类型的合理应用也直接影响存储效率和查询速度的提高。   3 BLOB类型在SQLite中的应用   3.1 SQLite的API函数   嵌入式移动数据库SQLite使用C语言API等接口,在此基础上的扩展也可用于其他语言的SQLite的接口[3]。以下是SQLite中常用的对数据库进行操作的函数:   (1)创建和打开数据库   int sqlite3_open(const char*,sqlite3**db);   功能是当数据库文件存在时,可以打开已存在的数据库;若不存在,则创建一个新的数据库文件并打开,且能通过输入参数返回连接。   (2)运行函数   int sqlite3_exec(sqlite3*,const char*sql,sqlite_callback,void*,char**em);   *sql是运行的SQL语句,该语句可按实际需要编写一条或多条;sqlite_callback是一个回调函数,根据实际可编写回调函数从数据库中获取需要的结果。   (3)预编译SQL语句的函数   int sqlite3_prepare(sqlite3*db,const char*iSql,int jByte,sqlite3_stmt**pStmt,const char**pl);   该函数需要一个数据库连接的指针,将给定的SQL文本转换为预声明语句对象并返回一个指向它的指针,这个函数并不执行SQL语句,只是预编译和解析SQL文本,准备执行。   (4)查询函数   int sqlite3_get_table(sqlite3*,const char*sql,char ***ret,int*nrow,int*ncol,char**em);   功能是无需回调函数处理,直接能查询结果集。   3.2 SQLite数据库BLOB类型应用实例   (1)SQLite二进制大对象处理技术   在实际编程开发中,往往是进行二进制大对象数据的访问,如图像、音视频等。对于这些数据不能像对待普通的文本一样插入或查询那样简单,而是将图像等文件在使用Insert或Update语句时先用通配符‘?’代替,通配符‘?’表示未定值是一个占位符,然后通过sqlite3_bind_blob绑定到Insert或Update中,替换‘?’部分并存储。如果是字符串,则还需要通过sqlite3_bind_parameter_index()获取对应的index,然后再调用sqlite3_bind_blob()操作。通常也用于构造不定条件的动态SQL语句。   以下的De

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档