CN107818157A - 一种基于fmdb的sql语句封装方法 - Google Patents

一种基于fmdb的sql语句封装方法 Download PDF

Info

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
Application number
CN201711042735.0A
Other languages
English (en)
Other versions
CN107818157B (zh
Inventor
郭艳杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kuwo Technology Co Ltd
Original Assignee
Beijing Kuwo Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kuwo Technology Co Ltd filed Critical Beijing Kuwo Technology Co Ltd
Priority to CN201711042735.0A priority Critical patent/CN107818157B/zh
Publication of CN107818157A publication Critical patent/CN107818157A/zh
Application granted granted Critical
Publication of CN107818157B publication Critical patent/CN107818157B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-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

一种基于FMDB的SQL语句封装方法
技术领域
本发明涉及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,用于存储包括统计数据的查询结果。
CN201711042735.0A 2017-10-31 2017-10-31 一种基于fmdb的sql语句封装方法 Active CN107818157B (zh)

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)

* Cited by examiner, † Cited by third party
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处理方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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