CN101140581A - 预处理特殊字符的sql语句构造方法和装置 - Google Patents
预处理特殊字符的sql语句构造方法和装置 Download PDFInfo
- Publication number
- CN101140581A CN101140581A CNA2007101076633A CN200710107663A CN101140581A CN 101140581 A CN101140581 A CN 101140581A CN A2007101076633 A CNA2007101076633 A CN A2007101076633A CN 200710107663 A CN200710107663 A CN 200710107663A CN 101140581 A CN101140581 A CN 101140581A
- Authority
- CN
- China
- Prior art keywords
- sql statement
- value
- character string
- character
- value character
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种计算机领域中的预处理特殊字符的sql语句构造方法和装置,所述方法包括,步骤一:对一个sql语句中包含的所有value字符串按出现顺序编号,并根据所述编号组织sql语句,如果涉及value字符串,则不添加实际内容,加入替换符代替,如此循环,直到整个语句构造结束;步骤二:对第一个value字符串中的非法字符进行转换,并根据其类型进行相应的合法性判断和范围验证等操作,得到合法value字符串,用合法value字符串替换初始sql语句中的替换符,直到所有value字符串都加入到sql语句中。采用本发明使得系统结构比较清晰,既减少了代码量,也保证了代码的正确性。
Description
技术领域
本发明涉及计算机应用领域,尤其涉及关系数据库管理系统中预处理特殊字符的SQL语句构造方法和装置。
背景技术
数据库尤其是关系型数据库,在软件开发领域应用非常广泛。在开发的过程中用到最多的就是根据应用要求,构造sql语句并发送到数据库执行。由于目前数据库管理系统自身的限制,对于包含某些特殊字符(例如单引号)的sql语句不能直接正常执行,所以在构造sql语句时必须对这些特殊字符做必要转换。所谓特殊字符,是由现有数据库系统所规定用来表示特殊含义的字符,如单引号’,作为sql语句中字符串的定界符,其他还有左括号[、右括号]等都属于特殊字符。如果sql语句直接包含这些字符,数据库语法解析器会将其理解为特殊含义,使其脱离设计本意,从而引起执行上的混乱。
例如将表(Me)、字段(UserLabel)为label_1的数据更新为label_2,所组织的sql语句应该为:Update Me set UserLabel=label_2 where UserLabel=label_1。
在前述Update语句中,如果label_1或label_2中含有单引号,如:UpdateMe set UserLabel=‘shen’zhen’where UserLabel=‘shen’zhen_1’,依照正常方式执行该语句必然会导致失败。要避免这种情况发生,必须将这些特殊字符进行转换,比如将字符串中包含的单引号’加转义符换做两个单引号”等。
目前,语言代码中常见的特殊字符转换处理方式为:每当需要向sql语句中添加一个可能包含特殊字符的字符串时,都预先进行检查并提前转换,然后再添加到语句中。该处理方式虽然能够解决sql语句中特殊字符执行的问题,但是其缺点也是非常显著的,首先会导致代码非常混乱,结构臃肿;同时也给后期修改维护带来了很大的困难。
发明内容
本发明所要解决的技术问题是克服现有技术存在的代码混乱、结构臃肿以及修改维护困难的缺点,以期提供一种预处理特殊字符的sql语句构造方法和装置。
本发明提供了一种预处理特殊字符的sql语句构造方法,
设定value字符串包含任意字符、数字或者时间等结构类型数据,以及无法由数据库正确识别的字符为非法字符;非value字符串包括包含规范字符;
包括以下步骤:
步骤一:对一个sql语句中包含的所有value字符串按出现顺序编号,并根据所述编号组织sql语句,如果涉及value字符串,则不添加实际内容,加入替换符代替,如此循环,直到整个语句构造结束;
步骤二:对第一个value字符串中的非法字符进行转换,并根据其类型进行相应的合法性判断和范围验证,得到合法value字符串,用合法value字符串替换初始sql语句中的替换符,直到所有value字符串都加入到sql语句中。
在本发明所述方法中,在所述步骤一中,对sql语句中包含的所有value字符串按出现顺序编号时记录字段名称和value编号的对应关系。
在本发明所述方法中,在所述步骤一中,使用特殊字符替换value字符串时,该特殊字符不出现在非value字符串中。
在本发明所述方法中,在所述步骤二中,进行非法字符转换时对数据类型进行区分。
在本发明所述方法中,所述数据类型包括字符串类型和/或时间类型。
本发明还构造了一种预处理特殊字符的sql语句构造装置,包括依次连接的编号模块、替换模块和转换模块,
所述编号模块对一个sql语句中包含的所有value字符串按出现顺序编号;
所述替换模块在组织sql语句中涉及value字符串时,暂时加入一个替换符代替,直到整个语句替换结束;
所述转换模块对各value字符串中的非法字符进行转换,并根据其类型进行相应的合法性判断和范围验证等操作,得到合法value字符串,用合法value字符串替换初始sql语句中的替换符。
本发明所述方法和装置与现有的sql语句处理方式比较具有非常明显的优点,由于sql语句采用统一的接口来构造,使得系统结构比较清晰,同时本发明所述方法将数据值的合法性判断限制在一个接口中执行,既减少了代码量,也保证了代码的正确性。事实上,由于本发明所述方法没有引入各种大型数据库的差异性,所以适用于各种大型数据库应用系统中查询的需求。
附图说明
图1是本发明所述预处理特殊字符的sql语句构造方法流程图;
图2是本发明所述预处理特殊字符的sql语句构造装置结构图;
图3是电信网管系统中网元报文数据库处理的流程图;
图4是图3所述流程中sql语句构造方法图。
具体实施方式
下面结合附图对本发明的具体实施例作进一步详细说明:
图1是本发明所述预处理特殊字符的sql语句构造方法流程图。
本发明所述方法将语句中包含的特殊字符转换操作限制在一个统一的接口中实现,为了说明本发明所提供的sql语句构造过程,首先需要做下面两个约定:
约定1:称对应于数据库表的字段值为value字符串,因为它来自应用,所以可能包含任意字符、数字或者时间等结构类型数据。与之相区别的是非value字符串,包括字段名或sql关键字,因为有明确的语法规定,所以只包含规范字符;
约定2:称上面约定中定义的value字符串包含无法由数据库正确识别的字符为非法字符。例如value字符串中的单引号(’)。
本发明所述方法步骤如下:
a)对一个sql语句中包含的所有value字符串按出现顺序编号;
b)组织sql语句,对value字符串以替换符代替,该替换符为不会出现在非value字符串中的特殊字符(如?),如此循环,直到整个语句构造结束,此时语句中所有value字符串均为替换符;
c)对value字符串中非法字符进行转换,得到合法value字符串,用合法value字符串替换初始sql语句中的替换符;
d)如此循环,直到所有value字符串都加入到sql语句中,此时sql语句不再包含替换符;
e)执行该条sql语句。
在所述步骤a)中,对一个sql语句中包含的所有value字符串按出现顺序编号,在编号的时候需记录字段名称和value编号的对应关系。在所述步骤b)中,使用特殊字符替换value字符串时,该特殊字符不会出现在非value字符串中。在所述步骤c)中,进行非法字符转换的时候需要对各种数据类型(如字符串类型,时间类型等)进行区分。
图2示出了本发明所构造的预处理特殊字符的sql语句构造装置,包括依次连接的编号模块、替换模块和转换模块,
所述编号模块对一个sql语句中包含的所有value字符串按出现顺序编号;
所述替换模块在组织sql语句中涉及value字符串时,不添加实际内容,暂时加入一个替换符代替,直到整个语句构造结束;
所述转换模块对各value字符串中的非法字符进行转换,并根据其类型进行相应的合法性判断和范围验证等操作,得到合法value字符串,用合法value字符串替换初始sql语句中的替换符。
下面结合图3和图4对本发明具体实施方式的电信网管系统中网元报文数据库处理过程进行说明。
在电信网络中,网元设备支撑起整个电信网络,为了使这些网元可以正常的工作,就需要一套电信网络管理系统对这些网元进行管理。实际处理中将网元信息保存在数据库的网元表(ME)中,然后根据需要对该表进行相应的数据库操作。
图3是电信网管系统中网元信息数据库处理流程图。该流程主要包括以下几个步骤:
1.获取外部模块传来的网元信息;
2.根据应用要求构造sql语句;
3.将构造好的sql语句发送到数据库执行并获取返回结果。
图4是图3所示步骤2中,sql语句构造的方法,也就是本发明所述方法的具体实施方式,首先进行如下定义:
定义1:定义一个网元结构ME_T:网元的编号定义为ID、网元的名称定义为MEName、网元的位置定义为Location、网元的创建时间定义为RaiseTime;
定义2:定义一个网元数据库表ME:定义ID字段用来存放网元的ID属性、定义MEName字段用来存放网元的MEName属性、定义Location字段用来存放网元的Location属性、定义RaiseTime字段用来存放网元的RaistTime属性。
依照上述定义,在电信网管系统中网元报文数据库处理过程中,构造sql语句的具体步骤如下:
(1)解析定义1中定义的网元结构中的各个属性值;
(2)构造sql语句,根据定义2中网元表的各个字段来构造一个初始的sql语句,将字段值使用问号来替代,例如:a)插入一条网元记录;b)ME_T的各属性值为:ID=1001、MEName=‘ME’、Location=“shen’zhen”、RaiseTime=“2006/12/30/03/25”;c)构造初始的sql语句,使用问号来替代具体的value值:
insert into ME(ID,MEName,Location,RaiseTime)
values(?,?,?,?);
(3)采用统一的接口来替换语句中的问号,在这个接口中进行特殊字符的替换,例如将单引号(‘)替换为(”),然后用替换后的字符串替换初始sql语句中问号(?),结果如下:
insert into ME(ID,MEName,Location,RaiseTime)
values(1001,‘ME’,‘shen”zhen’,’2006/12/30/03/25’);
(4)将构造好的sql语句发送到数据库执行并返回结果。
可以看出,本发明所述的sql语句构造方法,应用于电信网管系统的数据库应用程序设计中,解决了以往sql语句构造中各种特殊字符的替换问题,方便了数据合法性的判断,在电信网管系统中取得良好效果。
应当理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案的说明和具体实施方式做出各种可能的改变或替换,所有这些改变或替换都属于本发明的权利要求的保护范围。
Claims (6)
1.一种预处理特殊字符的sql语句构造方法,
设定value字符串包含任意字符、数字或者时间等结构类型数据,以及无法由数据库正确识别的字符为非法字符;非value字符串包括规范字符;
其特征在于,包括以下步骤:
步骤一:对一个sql语句中包含的所有value字符串按出现顺序编号,并根据所述编号组织sql语句,如果涉及value字符串,则不添加实际内容,加入替换符代替,如此循环,直到整个语句构造结束;
步骤二:对第一个value字符串中的非法字符进行转换,并根据其类型进行相应的合法性判断和范围验证,得到合法value字符串,用合法value字符串替换初始sql语句中的替换符,直到所有value字符串都加入到sql语句中。
2.根据权利要求1所述的预处理特殊字符的sql语句构造方法,其特征在于,在所述步骤一中,对sql语句中包含的所有value字符串按出现顺序编号时记录字段名称和value编号的对应关系。
3.根据权利要求1所述的预处理特殊字符的sql语句构造方法,其特征在于,在所述步骤一中,使用特殊字符替换value字符串时,该特殊字符不出现在非value字符串中。
4.根据权利要求1所述的预处理特殊字符的sql语句构造方法,其特征在于,在所述步骤二中,进行非法字符转换时对数据类型进行区分。
5.根据权利要求4中所述的方法,其特征在于,所述数据类型包括字符串类型和/或时间类型。
6.一种预处理特殊字符的sql语句构造装置,其特征在于,包括依次连接的编号模块、替换模块和转换模块,
所述编号模块对一个sql语句中包含的所有value字符串按出现顺序编号;
所述替换模块在组织sql语句中涉及value字符串时,加入一个替换符代替,直到整个语句替换结束;
所述转换模块对各value字符串中的非法字符进行转换,并根据其类型进行相应的合法性判断和范围验证,得到合法value字符串,用合法value字符串替换初始sql语句中的替换符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101076633A CN100504878C (zh) | 2007-05-24 | 2007-05-24 | 预处理特殊字符的sql语句构造方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101076633A CN100504878C (zh) | 2007-05-24 | 2007-05-24 | 预处理特殊字符的sql语句构造方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101140581A true CN101140581A (zh) | 2008-03-12 |
CN100504878C CN100504878C (zh) | 2009-06-24 |
Family
ID=39192534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101076633A Expired - Fee Related CN100504878C (zh) | 2007-05-24 | 2007-05-24 | 预处理特殊字符的sql语句构造方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100504878C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011140770A1 (zh) * | 2010-05-11 | 2011-11-17 | 中兴通讯股份有限公司 | 报表处理方法、装置及web服务器 |
CN106569986A (zh) * | 2015-10-12 | 2017-04-19 | 北京国双科技有限公司 | 字符串替换方法和装置 |
CN110222071A (zh) * | 2019-06-06 | 2019-09-10 | 上海达梦数据库有限公司 | 一种数据查询方法、装置、服务器及存储介质 |
CN110442843A (zh) * | 2019-06-25 | 2019-11-12 | 平安科技(深圳)有限公司 | 字符替换方法、系统、计算机设备及计算机可读存储介质 |
CN113342580A (zh) * | 2021-07-06 | 2021-09-03 | 中国工商银行股份有限公司 | 一种数据备份方法、装置和设备 |
CN113760962A (zh) * | 2021-09-01 | 2021-12-07 | 中国人民银行清算总中心 | 单领域至跨领域数据集数据处理方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102243583A (zh) * | 2011-06-09 | 2011-11-16 | 深圳市共进电子有限公司 | 一种命令行参数配置的实现方法 |
-
2007
- 2007-05-24 CN CNB2007101076633A patent/CN100504878C/zh not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011140770A1 (zh) * | 2010-05-11 | 2011-11-17 | 中兴通讯股份有限公司 | 报表处理方法、装置及web服务器 |
CN106569986A (zh) * | 2015-10-12 | 2017-04-19 | 北京国双科技有限公司 | 字符串替换方法和装置 |
CN106569986B (zh) * | 2015-10-12 | 2020-05-22 | 北京国双科技有限公司 | 字符串替换方法和装置 |
CN110222071A (zh) * | 2019-06-06 | 2019-09-10 | 上海达梦数据库有限公司 | 一种数据查询方法、装置、服务器及存储介质 |
CN110222071B (zh) * | 2019-06-06 | 2021-11-02 | 上海达梦数据库有限公司 | 一种数据查询方法、装置、服务器及存储介质 |
CN110442843A (zh) * | 2019-06-25 | 2019-11-12 | 平安科技(深圳)有限公司 | 字符替换方法、系统、计算机设备及计算机可读存储介质 |
CN110442843B (zh) * | 2019-06-25 | 2024-06-11 | 平安科技(深圳)有限公司 | 字符替换方法、系统、计算机设备及计算机可读存储介质 |
CN113342580A (zh) * | 2021-07-06 | 2021-09-03 | 中国工商银行股份有限公司 | 一种数据备份方法、装置和设备 |
CN113342580B (zh) * | 2021-07-06 | 2024-02-27 | 中国工商银行股份有限公司 | 一种数据备份方法、装置和设备 |
CN113760962A (zh) * | 2021-09-01 | 2021-12-07 | 中国人民银行清算总中心 | 单领域至跨领域数据集数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100504878C (zh) | 2009-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100504878C (zh) | 预处理特殊字符的sql语句构造方法和装置 | |
US11847112B2 (en) | Declarative and unified data transition | |
US7401086B2 (en) | Translating configuration files among network devices | |
CN101729594B (zh) | 一种远程配置控制方法和系统 | |
US20080155519A1 (en) | Code translator | |
CN114096956A (zh) | 一种数据库操作层表示方法及装置 | |
US20080270428A1 (en) | Uniform resource identifier template manipulation | |
CN104461531B (zh) | 一种报表系统自定义函数的实现方法 | |
CN105117431A (zh) | 一种动态配置外部导入数据的方法及系统 | |
CN106648587A (zh) | 一种基于注解的Web应用代码生成方法 | |
CN103092821A (zh) | 一种电子合同修改痕迹记录方法的实现 | |
CN101794318A (zh) | Url解析方法及设备 | |
CN109116828B (zh) | 一种控制器中模型代码配置方法和装置 | |
CN110321337A (zh) | 一种实现数据库动态切换的方法及计算机可读存储介质 | |
CN105005543A (zh) | 一种接口生成装置及方法 | |
CN107301347A (zh) | 一种基于静态分析获取Hbuilder App调用图的方法 | |
US7669192B2 (en) | Method to find a violation of a coding rule in program | |
CN105260223B (zh) | 一种scpi命令定义、解析、执行和测试的方法 | |
CN103678396B (zh) | 一种基于数据模型的数据备份方法和装置 | |
CN115878112A (zh) | 一种多方复杂商业协议智能合约生成系统及其生成方法 | |
CN103399744B (zh) | 一种构建企业门户平台的方法 | |
CN102833102A (zh) | 机卡分离型网关的用户侧设备系统及数据配置管理方法 | |
CN110018835A (zh) | Yang模型配置数据处理方法及装置、终端设备及存储介质 | |
CN101272222A (zh) | 一种约束校验方法及装置 | |
CN107133040A (zh) | 一种标准产品业务装置及业务模块扩展置换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090624 Termination date: 20190524 |
|
CF01 | Termination of patent right due to non-payment of annual fee |