CN107818157A - 一种基于fmdb的sql语句封装方法 - Google Patents
一种基于fmdb的sql语句封装方法 Download PDFInfo
- Publication number
- CN107818157A CN107818157A CN201711042735.0A CN201711042735A CN107818157A CN 107818157 A CN107818157 A CN 107818157A CN 201711042735 A CN201711042735 A CN 201711042735A CN 107818157 A CN107818157 A CN 107818157A
- Authority
- CN
- China
- Prior art keywords
- sql
- fmdb
- sql statement
- userdbmanager
- classes
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于FMDB的SQL语句封装方法,包括如下步骤:在FM接口层,创建一UserDBManager类,用于对用户数据库进行管理,所述UserDBManager类生成一个对象并调用方法:AllModel(),该方法内部调用FMDB封装函数:table函数,用于指定用户数据库中的表,selectArray函数,用于指定待执行的操作,附加函数,用于指定可选附加指令,当以上参数接收并解析完毕后,UserDBManager类通过commit指令将解析结果封装后传输给SQL执行层处理。本发明,基于FMDB,结构清晰,易于实现,简化了SQL语句的编写代码量,有利于提高开发效率,减少编程中重复劳动导致的错误。
Description
技术领域
本发明涉及SQLite API封装技术领域,具体说是一种基于FMDB的SQL语句封装方法。
背景技术
iOS SDK很早就支持了SQLite,在使用时,只需要加入libsqlite3.dylib依赖以及引入sqlite3.h头文件即可。但是,原生的SQLite API在使用上相当不友好,在使用时,非常不便。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于FMDB的SQL语句封装方法,基于FMDB,结构清晰,易于实现,简化了SQL语句的编写代码量,有利于提高开发效率,减少编程中重复劳动导致的错误。
为达到以上目的,本发明采取的技术方案是:
一种基于FMDB的SQL语句封装方法,其特征在于,包括如下步骤:
在FM接口层,创建一UserDBManager类,用于对用户数据库进行管理,
所述UserDBManager类生成一个对象并调用方法:AllModel(),该方法内部调用FMDB封装函数:
table函数,用于指定用户数据库中的表,
selectArray函数,用于指定待执行的操作,
附加函数,用于指定可选附加指令,
当以上参数接收并解析完毕后,UserDBManager类通过commit指令将解析结果封装后传输给SQL执行层处理。
在上述技术方案的基础上,所述可选附加指令与操作指令参数关联,包括但不限于:排序指令,数量限制指令,条件指令。
在上述技术方案的基础上,所述参数解析是指:
UserDBManager类将接收到的参数转发到SQL参数层,
在SQL参数层中,
将表名称参数解析为SQL语句中标准的表名称赋值语句,
将操作指令参数解析为SQL语句中标准的操作及制定列名称语句,
将附加函数解析为SQL语句中标准的附加函数开关语句,
SQL参数层处理完毕后,UserDBManager类将处理结果转发到SQL组装层,将处理结果组装成标准的SQL语句,
最终,SQL组装层将组装完毕的标准的SQL语句作为字符串,返回给UserDBManager类。
在上述技术方案的基础上,所述字符串通过commit指令封装后传输给SQL执行层处理。
在上述技术方案的基础上,所述字符串通过commit指令封装后作为params参数的值传输给SQL执行层处理。
在上述技术方案的基础上,SQL执行层解析commit指令中params参数携带的SQL语句后,将其存储到FM执行层的DBQueue队列,
在FM执行层中,通过executeQuery()方法来下达select指令以查询数据库,得到查询结果resultSet,
最后,将查询结果resultSet通过KWSqlResult参数返回给FM接口层。
在上述技术方案的基础上,所述KWSqlResult参数中至少包括以下数据:
成功标志位success,用于标志SQL执行的结果,
多数据位rows,用于存储包括多个数据的查询结果,
单数据位id,用于存储包括一个数据的查询结果,
计数位num,用于存储包括统计数据的查询结果。
本发明所述的基于FMDB的SQL语句封装方法,基于FMDB,结构清晰,易于实现,简化了SQL语句的编写代码量,有利于提高开发效率,减少编程中重复劳动导致的错误。
附图说明
本发明有如下附图:
图1 本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的基于FMDB的SQL语句封装方法,包括如下步骤:
在FM接口层,创建一UserDBManager类,用于对用户数据库进行管理,
所述UserDBManager类生成一个对象并调用方法:AllModel(),该方法内部调用FMDB封装函数:
table函数,用于指定用户数据库中的表,图1所示实施例中指定user表,即用户表,
selectArray函数,用于指定待执行的操作,图1所示实施例中指定selectarray指令,即选择数组,且指定选择nil对象,
附加函数,用于指定可选附加指令,图1所示实施例中指定sortStr指令,即排序指令,且具体限定为ORDER BY rowid DESC,还可以是数量限制指令,条件指令等,
当以上参数接收并解析完毕后,UserDBManager类通过commit指令将解析结果封装后传输给SQL执行层处理。
在上述技术方案的基础上,所述参数解析是指:
UserDBManager类将接收到的参数转发到SQL参数层,
在SQL参数层中,
将表名称参数解析为SQL语句中标准的表名称赋值语句,即:table=语句,图1所示实施例中应该解析为table=user,
将操作指令参数解析为SQL语句中标准的操作及指定列名称语句,即:获取指定的列的列名并对其进行相应操作,图1所示实施例中应该解析为获取uid,uname等user表中的列名,并对其执行select语句,由于图1所示实施例中指定选择nil对象,则相应解析为所有列的列名,此处不详述,
将附加函数解析为SQL语句中标准的附加函数开关语句,图1所示实施例中应该解析为ORDER BY rowid DESC,
SQL参数层处理完毕后,UserDBManager类将处理结果转发到SQL组装层,将处理结果组装成标准的SQL语句,图1所示实施例中应该解析为select(uid,uname,…) from userORDER BY rowid DESC,
最终,SQL组装层将组装完毕的标准的SQL语句作为字符串,返回给UserDBManager类。
在上述技术方案的基础上,所述字符串通过commit指令封装后传输给SQL执行层处理。
在上述技术方案的基础上,所述字符串通过commit指令封装后作为params参数的值传输给SQL执行层处理。
在上述技术方案的基础上,SQL执行层解析commit指令中params参数携带的SQL语句后,将其存储到FM执行层的DBQueue队列,
在FM执行层中,通过executeQuery()方法来下达select指令以查询数据库,得到查询结果resultSet,
最后,将查询结果resultSet通过KWSqlResult参数返回给FM接口层。
在上述技术方案的基础上,所述KWSqlResult参数中至少包括以下数据:
成功标志位success,用于标志SQL执行的结果,
多数据位rows,用于存储包括多个数据的查询结果,
单数据位id,用于存储包括一个数据的查询结果,
计数位num,用于存储包括统计数据的查询结果。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (7)
1.一种基于FMDB的SQL语句封装方法,其特征在于,包括如下步骤:
在FM接口层,创建一UserDBManager类,用于对用户数据库进行管理,
所述UserDBManager类生成一个对象并调用方法:AllModel(),该方法内部调用FMDB封装函数:
table函数,用于指定用户数据库中的表,
selectArray函数,用于指定待执行的操作,
附加函数,用于指定可选附加指令,
当以上参数接收并解析完毕后,UserDBManager类通过commit指令将解析结果封装后传输给SQL执行层处理。
2.如权利要求1所述的基于FMDB的SQL语句封装方法,其特征在于:所述可选附加指令与操作指令参数关联,包括但不限于:排序指令,数量限制指令,条件指令。
3.如权利要求1所述的基于FMDB的SQL语句封装方法,其特征在于:所述参数解析是指:
UserDBManager类将接收到的参数转发到SQL参数层,
在SQL参数层中,
将表名称参数解析为SQL语句中标准的表名称赋值语句,
将操作指令参数解析为SQL语句中标准的操作及制定列名称语句,
将附加函数解析为SQL语句中标准的附加函数开关语句,
SQL参数层处理完毕后,UserDBManager类将处理结果转发到SQL组装层,将处理结果组装成标准的SQL语句,
最终,SQL组装层将组装完毕的标准的SQL语句作为字符串,返回给UserDBManager类。
4.如权利要求3所述的基于FMDB的SQL语句封装方法,其特征在于:所述字符串通过commit指令封装后传输给SQL执行层处理。
5.如权利要求4所述的基于FMDB的SQL语句封装方法,其特征在于:所述字符串通过commit指令封装后作为params参数的值传输给SQL执行层处理。
6.如权利要求5所述的基于FMDB的SQL语句封装方法,其特征在于:SQL执行层解析commit指令中params参数携带的SQL语句后,将其存储到FM执行层的DBQueue队列,
在FM执行层中,通过executeQuery()方法来下达select指令以查询数据库,得到查询结果resultSet,
最后,将查询结果resultSet通过KWSqlResult参数返回给FM接口层。
7.如权利要求6所述的基于FMDB的SQL语句封装方法,其特征在于:所述KWSqlResult参数中至少包括以下数据:
成功标志位success,用于标志SQL执行的结果,
多数据位rows,用于存储包括多个数据的查询结果,
单数据位id,用于存储包括一个数据的查询结果,
计数位num,用于存储包括统计数据的查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711042735.0A CN107818157B (zh) | 2017-10-31 | 2017-10-31 | 一种基于fmdb的sql语句封装方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711042735.0A CN107818157B (zh) | 2017-10-31 | 2017-10-31 | 一种基于fmdb的sql语句封装方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107818157A true CN107818157A (zh) | 2018-03-20 |
CN107818157B CN107818157B (zh) | 2021-06-29 |
Family
ID=61604438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711042735.0A Active CN107818157B (zh) | 2017-10-31 | 2017-10-31 | 一种基于fmdb的sql语句封装方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107818157B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1294126A1 (de) * | 2001-09-14 | 2003-03-19 | Siemens Aktiengesellschaft | Verfahren zur Steuerung des Zugriffs auf ein Störungsmeldungssystem eines Kommunikationsnetzes, Störungsmeldungssystem und Computerprogramm |
US20080270424A1 (en) * | 2007-04-24 | 2008-10-30 | Microsoft Corporation | Standalone execution of incomplete data flows |
CN101847142A (zh) * | 2009-03-25 | 2010-09-29 | 上海斯年信息技术有限公司 | 基于数据表模型封装的网页开发方法 |
US20120221512A1 (en) * | 2011-02-28 | 2012-08-30 | International Business Machines Corporation | Dynamic database dump |
CN104142944A (zh) * | 2013-05-07 | 2014-11-12 | 杭州勒卡斯广告策划有限公司 | 一种对sql语句进行封装的方法及*** |
CN105630508A (zh) * | 2015-12-31 | 2016-06-01 | 广州亦云信息技术有限公司 | 在Java***中封装SQL语言的处理方法及*** |
CN106095792A (zh) * | 2016-05-27 | 2016-11-09 | ***股份有限公司 | 生成数据库操作代码的方法和装置 |
CN106294776A (zh) * | 2016-08-12 | 2017-01-04 | 北京东方车云信息技术有限公司 | 一种数据处理方法及装置 |
CN106599139A (zh) * | 2016-12-05 | 2017-04-26 | 金蝶软件(中国)有限公司 | 一种基于MyBatis框架的SQL处理方法及装置 |
-
2017
- 2017-10-31 CN CN201711042735.0A patent/CN107818157B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1294126A1 (de) * | 2001-09-14 | 2003-03-19 | Siemens Aktiengesellschaft | Verfahren zur Steuerung des Zugriffs auf ein Störungsmeldungssystem eines Kommunikationsnetzes, Störungsmeldungssystem und Computerprogramm |
US20080270424A1 (en) * | 2007-04-24 | 2008-10-30 | Microsoft Corporation | Standalone execution of incomplete data flows |
CN101847142A (zh) * | 2009-03-25 | 2010-09-29 | 上海斯年信息技术有限公司 | 基于数据表模型封装的网页开发方法 |
US20120221512A1 (en) * | 2011-02-28 | 2012-08-30 | International Business Machines Corporation | Dynamic database dump |
CN104142944A (zh) * | 2013-05-07 | 2014-11-12 | 杭州勒卡斯广告策划有限公司 | 一种对sql语句进行封装的方法及*** |
CN105630508A (zh) * | 2015-12-31 | 2016-06-01 | 广州亦云信息技术有限公司 | 在Java***中封装SQL语言的处理方法及*** |
CN106095792A (zh) * | 2016-05-27 | 2016-11-09 | ***股份有限公司 | 生成数据库操作代码的方法和装置 |
CN106294776A (zh) * | 2016-08-12 | 2017-01-04 | 北京东方车云信息技术有限公司 | 一种数据处理方法及装置 |
CN106599139A (zh) * | 2016-12-05 | 2017-04-26 | 金蝶软件(中国)有限公司 | 一种基于MyBatis框架的SQL处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
刘丹: ""OOP 的封装性在各种编程语言中的试验研究"", 《信息与电脑(理论版)》 * |
牛丽 等: ""iOS平台移动学习资源构建及终端实现研究"", 《中国教育信息化》 * |
Also Published As
Publication number | Publication date |
---|---|
CN107818157B (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105138501B (zh) | 一种可配置的动态报表生成方法及*** | |
CN103440273B (zh) | 一种数据跨平台迁移方法及装置 | |
CN103500196B (zh) | 多并发大数据量环境下excel数据导出方法及其导出装置 | |
CN103488704B (zh) | 一种数据存储方法及装置 | |
CN111078702B (zh) | 一种sql语句分类管理及统一查询方法和装置 | |
EP2924588A1 (en) | Report creation method, device and system | |
CN103714145B (zh) | 关系型和Key-Value型数据库空间数据索引方法 | |
CN109978499B (zh) | 一种多测站事后遥测数据快速处理方法 | |
CN106547729B (zh) | 一种数据报表的动态生成方法及*** | |
CN105631113B (zh) | 核电工程管道iso图定制方法 | |
CN109727249A (zh) | 卷积神经网络中的一种语义图像分割方法 | |
CN103123650A (zh) | 一种基于整数映射的xml数据库全文索引方法 | |
CN1786965A (zh) | 一种新闻网页正文信息的提取方法 | |
CN104063519A (zh) | 基于excel的bpa电网数据解析及管理方法及*** | |
CN100589101C (zh) | 基于程序调用接口的Oracle关系数据库的数据访问方法 | |
CN104794203A (zh) | 一种藻类计数数据语音快速录入及报表生成***和方法 | |
CN108536745A (zh) | 基于Shell的数据表提取方法、终端、设备及存储介质 | |
CN108256820A (zh) | 一种基于mbd的三维装配视图下的pbom调整方法 | |
CN109445768A (zh) | 数据库脚本生成方法、装置、计算机设备及存储介质 | |
CN107818157A (zh) | 一种基于fmdb的sql语句封装方法 | |
CN110674195A (zh) | 一种基于表单的查询方法 | |
CN101751436A (zh) | 一种生成报表的方法及装置 | |
CN107562955A (zh) | 一种sql语句的快速生成方法 | |
CN101714087A (zh) | C语言结构体至关系数据库表的映射***及映射方法 | |
CN103793519A (zh) | 一种支持海量数据导出的自动化工具 |
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 |