一种对sqlite3型嵌入式数据库进行升级的方法及系统的制作方法_2

文档序号:9471198阅读:来源:国知局
施例中根据升级配置文件对设备内存中的源数据库进行升级的具体实现流程图;
[0042]图3是本发明实施例提供的对sqlite3型嵌入式数据库进行升级的系统的结构框图。
【具体实施方式】
[0043]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0044]图1示出了本发明实施例提供的对sqlite3型嵌入式数据库进行升级的方法的具体实现流程。参见图1所示,本发明实施例提供的一种对sqlite3型嵌入式数据库进行升级的方法,包括:
[0045]在SlOl中,在设备上完成升级应用软件的加载并重新启动设备。
[0046]在本发明实施例中,对于基于嵌入式应用软件的设备而言,一般采用sqlite3型嵌入式数据库来存储配置和状态信息。在对设备上的应用软件进行升级时,由于应用软件升级后使用的数据库可能与升级前使用的数据库不同,因此在加载完升级程序后还需要对设备内存中的数据库进行升级处理。进一步的,所述设备包括但不限于无线管理器设备,例如:还可以路由设备或者任何使用sqlite型数据库的设备。
[0047]在S102中,读取所述升级应用软件中目标数据库的版本号和所述设备内存中源数据库的版本号,判断所述目标数据库的版本号与所述源数据库的版本号是否一致。
[0048]在本发明实施例中,升级后的应用软件自带有目标数据库的版本号,设备在完成升级应用软件的加载并重新启动设备的过程中会自动读取升级后的应用软件自带的目标版本号和设备内存中源数据库的版本号。
[0049]在S103中,若不一致,则对所述源数据库进行备份,并调用所述升级应用软件内嵌的与所述目标数据库的版本号和所述源数据库的版本号相匹配的升级配置文件,根据所述升级配置文件对所述设备内存中的所述源数据库进行升级。
[0050]在本发明实施例中,一个应用软件对应有多个升级配置文件,升级配置文件是根据升级后的应用软件的目标数据库的版本号编写的,例如:若升级后的应用软件的目标数据库版本号为第3版,则与所述应用软件一起打包的升级配置文件包括:从版本I升级到版本3的升级配置文件和从版本2升级到版本3的升级配置文件。具体的,所述升级配置文件包括目标数据库中数据库结构以及源数据库中数据结构的字段变化信息,所述字段变化信息包括:删除字段、添加字段、修改字段名称、修改字段类型以及修改字段长度。且所述升级配置文件以xml文件格式的形式内嵌于所述升级应用软件中,且所述升级配置文件中的每个升级目标作为一个单元以链表的形式存储,以便在数据库升级过程中根据所述链表顺序执行所述升级配置文件中的升级目标。
[0051]作为一具体实现示例,图2示出了步骤S103中根据所述升级配置文件对所述设备内存中的源数据库进行升级的具体实现过程,参见图2所示,该过程包括:
[0052]在S201中,获取目标数据库的数据库结构,根据所述目标数据库的数据库结构和所述升级配置文件逆向建立所述源数据库的数据库结构。
[0053]在本发明实施例中,由于提取源数据库中的表数据时,必须使用对应的旧数据库结构进行内存空间分配和数据提取,而此时升级后的应用软件中的数据库结构为目标数据库的新数据库结构,所以在升级时,需要根据新数据库结构体和对应的升级配置文件逆向建立源数据库的旧数据库结构,其中升级配置文件中记录有新数据库结构和旧数据库结构的差异ig息。
[0054]在S202中,利用所述源数据库的数据库结构进行内存空间分配,以读取所述源数据库中旧数据表的数据流。在本发明实施例中,采用mallocO函数进行内存空间分配。
[0055]在S203中,删除所述旧数据表,并利用所述目标数据库的数据库结构创建新数据表。
[0056]在S204中,将所述数据流恢复到所述新数据表中,并根据所述升级配置文件对所述新数据表中数据流的位偏移进行处理,以生成目标数据库。
[0057]其中,所述根据所述升级配置文件对所述新数据表中数据流的位偏移进行处理,以生成目标数据库具体包括:
[0058]若所述升级目标为删除字段,则对所述数据流按照位进行查找以获取待删除字段存储的目标位,删除所述目标位处存储的信息,并重新进行数据位偏移。
[0059]在本发明实施例中,若查找出来的不止一条目标位信息,则需要对查找到的每条目标位信息都进行处理,删除查找到的所有对应字段位置存储的信息,并且重新进行数据位偏移。
[0060]若所述升级目标为添加字段,则对所述数据流按照位进行查找以获取待添加字段的添加位置,在所述添加位置处添加对应的字段长度,并给新添加的字段赋默认的数据。同样,在本发明实施例中,若查找出多个添加位置,则需要对查找到的多个添加位置中的每一个添加位置都进行处理。
[0061]若所述升级目标为修改字段名称,则不进行处理。
[0062]若所述升级目标为修改字段类型,则计算出待修改字段位置处数据流的位偏移量,并删除所述待修改字段位置处的数据流,然后进行字段添加,并计算出新添加字段位置处数据流的位偏移量,对两个位偏移量进行差值计算,以进行位偏移,并在新添加字段的位置处写入默认值。作为一具体实现示例:若所述升级目标为将字段类型由int改为char,则删除原来int型字段所占的4字节长度,然后添加char型字段对应的默认值,进行数据流位偏移。
[0063]若所述升级目标为修改字段长度,则根据待改动长度进行数据流的位偏移,并写入默认值。
[0064]在本发明实施例中,所述修改字段长度专指char型字符串。例如:若所述升级目标为将char型字段长度由temp [20]改为temp [10],提取出的旧数据原来里边的数据流已经有大于10个字节的内容,则删除该数据,并添加进10字节的默认值,若旧数据小于等于10个字节,则不修改。反之,若所述升级目标为将char型字段长度由Temp[10]改为temp [20],则不用修改。
[0065]此外,需要说明的,由于本发明实施例中在对数据库进行升级前对源数据库进行了备份,所以在数据库的升级过程中一旦出现错误即可利用备份的源数据库逆向升级到旧版本的数据库。
[0066]以上可以看出,本发明实施例提供一种对sqlite3型嵌入式数据库进行升级的方法,能够实现通过对数据库中现有的数据的提取拆分,在无损的前提下进行数据库的升级,有效的完善了现有sqlite3嵌入式数据库的不足,补充了 sqlite3嵌入式数据库缺失的功能,能够使大部分使用sqlite3型嵌入式数据库的设备均可以进行无损升级操作,最大程度的保护了源数据库中的数据,简化了升级步骤、缩短了升级时间,并且极大地方便了设备的维护,减少了维护人员的工作量。
[0067]图3示出了本发明实施例提供的对sqlite3型嵌入式数据库进行升级的系统的结构框图,该系统位于本发明实施例所述的设备中,用于运行上述图1?图2所示实施例提供的方法。为了便于说明仅仅示出了与本实施例相关的部分。
[0068]参见图3所示,本发明实施例提供一种对sqlite3型嵌入式数据库进行升级的系统,包括:
[0069]应用软件升级模块1,用于在设备上完成升级应用软件的加载并重新启动设备;
[0070]判断模块2,用于读取所述升级应用软件中目标数据库的版本号和所述设备内存中源数据库的版本号,判断所述目标数据库的版本号与所述源数据库的版本号是否一致;
[0071]数据库升级模块3,用于若不一致,则对所述源数据库进行备份,并调用所述升级应用软件内嵌的与所述目标数据库的版本号和所述源数据库的版本号相匹配的升级配置文件,根据所述升级配置文件对所述设备内存中的所述源数据库进行升级。
[0072]可选的,所述数据库升级模块3包括:
[0073]数据库结构逆向建立单元31,用于获取目标数据库的数据库结构,根据所述目标数据库的数据库结构和所述升级配置文件逆向建立所述源数据库的数据库结构;
[0074]数据流获取单元32,用于利用所述源数据库的数据库结构进行内存空间分配,以读取所述源数据库中旧数据表的数据流;
[0075]新数据表创建单元33,用于删除所述旧数据表,并利用所述目标数据库的数据库结构创建新数据表;
[0076]数据流位偏移处理单元34,用于将所述数据流恢复到所述新数据表中,并根据所述升级配置文件对所述新数据表中数据流的位偏移进行处理,以生成目标数据库。
[0077]可选的,所述升级配置文件包括目标数据库中数据库结构以及源数据库中数据结构的字段变化信息,所述字段变化信息包括:删除字段、添加字段、修改字段名称、修改字段类型以及修改字段长度。
[0078]可选的,所述升级配置文件以xml文件格式的形式内嵌于所述升级应用软件中,且所
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1