CN108614868A - 一种数据库自动升级方法 - Google Patents
一种数据库自动升级方法 Download PDFInfo
- Publication number
- CN108614868A CN108614868A CN201810336587.1A CN201810336587A CN108614868A CN 108614868 A CN108614868 A CN 108614868A CN 201810336587 A CN201810336587 A CN 201810336587A CN 108614868 A CN108614868 A CN 108614868A
- Authority
- CN
- China
- Prior art keywords
- field
- database
- methods
- checknewcolumn
- behavior
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据库自动升级方法,包括如下步骤:当数据库表字段添加行为触发时,发出添加字段请求,收到添加字段请求,解析当前数据库版本及目标数据库版本,直接在对应表添加字段,在调用insertModel方法过程中,如果产生错误isError为真,则当前数据插入失败,此时,调用checkNewColumn方法逐一检查是否存在需要添加的新字段,调用checkNewColumn类逐一检查待添加字段,按以下原则确定需添加字段有哪些:关键字key不在当前表的列中,关键字key需在属性的列表中,checkNewColumn类对确定需添加字段通过addNewColumn方法完成数据库表字段添加行为。本发明,流程简洁、效率高,通过字段添加行为高效完成数据库升级,对原有数据影响小,便于维护,用户体验好。
Description
技术领域
本发明涉及数据库迁移及升级技术领域,具体说是一种数据库自动升级方法。
背景技术
在iOS开发中,经常会遇到数据库升级,升级或涉及到修改、删除、增加表的某些字段。通常,数据库升级伴随着App版本更新,为了满足新版本App的需要,对数据库表结构改变的处理,必须给予考虑。
常规方案通常是:
1.每一次运行程序,判断数据库是否存在。如果不存在,创建数据库。如果存在,进行其他后续处理。
2.第一次安装App,创建数据库,并将版本号存入数据库中。同时保存一个当前版本号加1的字段到数据库中。
3.更新App,从数据库中读取到上一次保存的版本号字段。比如要升级为2,会直接从case2开始执行。修改完数据结构后,再一次将版本号字段存入数据库。
4.每一次数据库结构有更新,直接在后面加case语句即可。
但,升级还需确保数据库中已有的数据不丢失。尤其是在遇到数据库表字段添加行为的时候尤为重要。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种数据库自动升级方法,流程简洁、效率高,通过字段添加行为高效完成数据库升级,对原有数据影响小,便于维护,用户体验好。
为达到以上目的,本发明采取的技术方案是:
一种数据库自动升级方法,其特征在于,包括如下步骤:
当数据库表字段添加行为触发时,发出添加字段请求,
收到添加字段请求,解析当前数据库版本及目标数据库版本,直接在对应表添加字段,
在调用insertModel方法过程中,如果产生错误isError为真,则当前数据插入失败,此时,调用checkNewColumn方法逐一检查是否存在需要添加的新字段,
checkNewColumn类通过getTableAllCololumn方法获得当前表中全部列的信息,
checkNewColumn类通过getModelAllProperties方法获得Model中全部属性信息,
checkNewColumn类通过fmPersistentKeys方法,按以下原则确定需添加字段有哪些:
关键字key不在当前表的列中,
关键字key需在属性的列表中,
checkNewColumn类对确定需添加字段通过addNewColumn方法完成数据库表字段添加行为。
在上述技术方案的基础上,需添加字段对应的属性通过fmPersistentKeys方法传入。
在上述技术方案的基础上,完成数据库表字段添加行为后,更新目标表中全部列的信息。
在上述技术方案的基础上,
当插入新数据出错时,触发数据库表字段监测并添加行为,
或:
当获取model数据监测到未知属性时,触发数据库表字段添加行为。
本发明所述的数据库自动升级方法,流程简洁、效率高,通过字段添加行为高效完成数据库升级,对原有数据影响小,便于维护,用户体验好。
本发明所述自动升级尤指:客户端开发中常遇到的数据库表字段添加行为。
附图说明
本发明有如下附图:
图1本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的数据库自动升级方法,包括如下步骤:
当数据库表字段添加行为触发时,发出添加字段请求,
收到添加字段请求,解析当前数据库版本及目标数据库版本,直接在对应表添加字段,
在调用insertModel方法过程中,如果产生错误isError为真,则当前数据插入失败,此时,调用checkNewColumn方法逐一检查是否存在需要添加的新字段,
checkNewColumn类通过getTableAllCololumn方法获得当前表中全部列的信息,
checkNewColumn类通过getModelAllProperties方法获得Model中全部属性信息,
checkNewColumn类通过fmPersistentKeys方法,按以下原则确定需添加字段有哪些:
关键字key不在当前表的列中,
关键字key需在属性的列表中,
checkNewColumn类对确定需添加字段通过addNewColumn方法完成数据库表字段添加行为。
在上述技术方案的基础上,需添加字段对应的属性通过fmPersistentKeys方法传入。
在上述技术方案的基础上,完成数据库表字段添加行为后,更新目标表中全部列的信息。
在上述技术方案的基础上,
当插入新数据出错时,触发数据库表字段监测并添加行为,
或:
当获取model数据监测到未知属性时,触发数据库表字段添加行为。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (4)
1.一种数据库自动升级方法,其特征在于,包括如下步骤:
当数据库表字段添加行为触发时,发出添加字段请求,
收到添加字段请求,解析当前数据库版本及目标数据库版本,直接在对应表添加字段,
在调用insertModel方法过程中,如果产生错误isError为真,则当前数据插入失败,此时,调用checkNewColumn方法逐一检查是否存在需要添加的新字段,
checkNewColumn类通过getTableAllCololumn方法获得当前表中全部列的信息,
checkNewColumn类通过getModelAllProperties方法获得Model中全部属性信息,
checkNewColumn类通过fmPersistentKeys方法,按以下原则确定需添加字段有哪些:
关键字key不在当前表的列中,
关键字key需在属性的列表中,
checkNewColumn类对确定需添加字段通过addNewColumn方法完成数据库表字段添加行为。
2.如权利要求1所述的数据库自动升级方法,其特征在于:需添加字段对应的属性通过fmPersistentKeys方法传入。
3.如权利要求1所述的数据库自动升级方法,其特征在于:完成数据库表字段添加行为后,更新目标表中全部列的信息。
4.如权利要求1所述的数据库自动升级方法,其特征在于:当插入新数据出错时,触发数据库表字段监测并添加行为,
或:
当获取model数据监测到未知属性时,触发数据库表字段添加行为。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810336587.1A CN108614868B (zh) | 2018-04-16 | 2018-04-16 | 一种数据库自动升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810336587.1A CN108614868B (zh) | 2018-04-16 | 2018-04-16 | 一种数据库自动升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108614868A true CN108614868A (zh) | 2018-10-02 |
CN108614868B CN108614868B (zh) | 2021-09-17 |
Family
ID=63660171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810336587.1A Active CN108614868B (zh) | 2018-04-16 | 2018-04-16 | 一种数据库自动升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108614868B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046074A (zh) * | 2019-12-13 | 2020-04-21 | 北京百度网讯科技有限公司 | 流式数据处理方法、装置、设备和介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183361A (zh) * | 2006-11-13 | 2008-05-21 | 中兴通讯股份有限公司 | 一种关系数据库应用自动升级的方法 |
CN101499069A (zh) * | 2008-02-02 | 2009-08-05 | 中兴通讯股份有限公司 | 内存数据库文件的更新方法及更新装置 |
CN102402559A (zh) * | 2010-09-16 | 2012-04-04 | 中兴通讯股份有限公司 | 一种数据库升级脚本的生成方法和装置 |
US8589451B1 (en) * | 2012-05-24 | 2013-11-19 | Sap Ag | Systems and methods for generating a common data model for relational and object oriented databases |
CN105224361A (zh) * | 2015-09-15 | 2016-01-06 | 深圳市华讯方舟软件信息科技有限公司 | 一种对sqlite3型嵌入式数据库进行升级的方法及系统 |
CN105373631A (zh) * | 2015-12-18 | 2016-03-02 | 河南思维自动化设备股份有限公司 | 基于SQLSever的数据库结构自动升级方法 |
CN106156052A (zh) * | 2015-03-27 | 2016-11-23 | 中兴通讯股份有限公司 | 终端数据升级方法及装置 |
CN106502685A (zh) * | 2016-11-01 | 2017-03-15 | Tcl集团股份有限公司 | 一种数据库的升级方法及系统 |
CN106648679A (zh) * | 2016-12-29 | 2017-05-10 | 南威软件股份有限公司 | 一种结构化数据的版本管理方法 |
CN106802817A (zh) * | 2016-12-29 | 2017-06-06 | 杭州迪普科技股份有限公司 | SQLite数据库的升级方法及装置 |
CN106844772A (zh) * | 2017-02-28 | 2017-06-13 | 东软集团股份有限公司 | 应用数据库的更新方法及装置 |
-
2018
- 2018-04-16 CN CN201810336587.1A patent/CN108614868B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183361A (zh) * | 2006-11-13 | 2008-05-21 | 中兴通讯股份有限公司 | 一种关系数据库应用自动升级的方法 |
CN101499069A (zh) * | 2008-02-02 | 2009-08-05 | 中兴通讯股份有限公司 | 内存数据库文件的更新方法及更新装置 |
CN102402559A (zh) * | 2010-09-16 | 2012-04-04 | 中兴通讯股份有限公司 | 一种数据库升级脚本的生成方法和装置 |
US8589451B1 (en) * | 2012-05-24 | 2013-11-19 | Sap Ag | Systems and methods for generating a common data model for relational and object oriented databases |
CN106156052A (zh) * | 2015-03-27 | 2016-11-23 | 中兴通讯股份有限公司 | 终端数据升级方法及装置 |
CN105224361A (zh) * | 2015-09-15 | 2016-01-06 | 深圳市华讯方舟软件信息科技有限公司 | 一种对sqlite3型嵌入式数据库进行升级的方法及系统 |
CN105373631A (zh) * | 2015-12-18 | 2016-03-02 | 河南思维自动化设备股份有限公司 | 基于SQLSever的数据库结构自动升级方法 |
CN106502685A (zh) * | 2016-11-01 | 2017-03-15 | Tcl集团股份有限公司 | 一种数据库的升级方法及系统 |
CN106648679A (zh) * | 2016-12-29 | 2017-05-10 | 南威软件股份有限公司 | 一种结构化数据的版本管理方法 |
CN106802817A (zh) * | 2016-12-29 | 2017-06-06 | 杭州迪普科技股份有限公司 | SQLite数据库的升级方法及装置 |
CN106844772A (zh) * | 2017-02-28 | 2017-06-13 | 东软集团股份有限公司 | 应用数据库的更新方法及装置 |
Non-Patent Citations (2)
Title |
---|
E. GOKULAKANNAN: "Survey on privacy preserving updates on unidentified database", 《IEEE》 * |
薛立俊: "一种数据库无版本管理方法的设计和实现", 《工业控制计算机》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046074A (zh) * | 2019-12-13 | 2020-04-21 | 北京百度网讯科技有限公司 | 流式数据处理方法、装置、设备和介质 |
CN111046074B (zh) * | 2019-12-13 | 2023-09-01 | 北京百度网讯科技有限公司 | 流式数据处理方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108614868B (zh) | 2021-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104133878B (zh) | 用户标签的生成方法和装置 | |
CN109885581A (zh) | 数据库的同步方法、装置、设备及存储介质 | |
CN109446218A (zh) | Sql语句生成方法、装置及计算机可读存储介质 | |
CN106201552A (zh) | 一种软件升级方法、客户端、服务器及系统 | |
CN107800757B (zh) | 用户行为记录方法及装置 | |
CN102402559A (zh) | 一种数据库升级脚本的生成方法和装置 | |
US11693731B2 (en) | System and methods for diagnosing and repairing a smart mobile device by disabling components | |
CN111008028B (zh) | 一种软件升级方法、设备和存储介质 | |
CN110232187A (zh) | 企业名称相似度识别方法、装置、计算机设备和存储介质 | |
CN108536745A (zh) | 基于Shell的数据表提取方法、终端、设备及存储介质 | |
CN107368513B (zh) | 客户端数据库更新的方法及装置 | |
US11301221B2 (en) | Rapid code compiling system | |
CN109002330A (zh) | 一种识别uefi os启动项的方法、装置及设备 | |
CN103995885A (zh) | 实体名的识别方法和装置 | |
US8296785B2 (en) | Providing links between application programs | |
CN106033474A (zh) | 一种数据同步更新方法、装置及电子设备 | |
US8600990B2 (en) | Interacting methods of data extraction | |
US7958083B2 (en) | Interacting methods of data summarization | |
CN107391539B (zh) | 事务处理方法、服务器和存储介质 | |
CN108614868A (zh) | 一种数据库自动升级方法 | |
CN109582382B (zh) | 配置信息的加载方法、装置、存储介质及终端设备 | |
CN107015831A (zh) | 一种基于服务器端升级的客户端升级管理方法及系统 | |
CN104572661B (zh) | 终端设备以及信息处理方法 | |
CN104636471A (zh) | 一种程序代码的查找方法及装置 | |
US11169829B2 (en) | Determining candidate patches for a computer software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |