CN108460092B - 包含数据库内置函数的sql查询语句自动生成方法及系统 - Google Patents
包含数据库内置函数的sql查询语句自动生成方法及系统 Download PDFInfo
- Publication number
- CN108460092B CN108460092B CN201810087128.4A CN201810087128A CN108460092B CN 108460092 B CN108460092 B CN 108460092B CN 201810087128 A CN201810087128 A CN 201810087128A CN 108460092 B CN108460092 B CN 108460092B
- Authority
- CN
- China
- Prior art keywords
- function
- information
- sql query
- built
- text file
- 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.)
- Active
Links
Images
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
- 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/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种包含数据库内置函数的sql查询语句自动生成方法,包括从数据库中获取要查询的表的表结构信息,且将获取的表结构信息保存成第一文本文件;从数据库中获取所有支持的内置函数的函数信息,且将获取的函数信息保存成第二文本文件;对第一文本文件中的表结构信息与第二文本文件中的函数信息进行类型比对匹配,且将相同类型的信息封装成sql查询子句;将sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。本发明还提供一种方法所对应的系统。本发明优点:通过该方法可以实现将内置函数包含到sql查询语句中,且可以通过生成的sql查询语句来测试数据库的内置函数在复杂sql语句中的性能和功能。
Description
技术领域
本发明涉及数据库领域,特别涉及一种包含数据库内置函数的sql查询语句自动生成方法及系统。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理已不再仅仅是存储和管理数据,且已转变成用户所需要的各种数据管理的方式。
近几年来,随着大数据的发展,数据库的类型变得越来越多,sql语法和使用方法也不同,对功能和性能的要求也越来越高。sql查询语句自动生成工具是在测试数据库功能和性能时经常需要使用到的一种工具,但是,现有数据库的sql查询语句自动化生成工具都只包含表的列名,因此,只能对表格的列名进行测试,而对数据库内置的函数则无法进行测试,这为实际的测试工作带来了诸多的不便。
发明内容
本发明要解决的技术问题之一,在于提供一种包含数据库内置函数的sql查询语句自动生成方法,通过该方法可以实现将内置函数包含到sql查询语句中,且可以通过生成的sql查询语句来测试数据库的内置函数在复杂sql语句中的性能和功能。
本发明是这样实现技术问题之一的:包含数据库内置函数的sql查询语句自动生成方法,所述方法包括如下步骤:
步骤S1、从数据库中获取要查询的表的表结构信息,且将获取的表结构信息保存成第一文本文件;
步骤S2、从数据库中获取所有支持的内置函数的函数信息,且将获取的函数信息保存成第二文本文件;
步骤S3、对第一文本文件中的表结构信息与第二文本文件中的函数信息进行类型比对匹配,且将相同类型的信息封装成sql查询子句;
步骤S4、将sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。
进一步地,在所述步骤S1中,所述从数据库中获取要查询的表的表结构信息具体为:从数据库中获取要查询的表的列名以及表中各个列的类型信息。
进一步地,在所述步骤S2中,所述从数据库中获取所有支持的内置函数的函数信息具体为:从数据库中获取所有支持的内置函数的函数名称、函数返回值类型、函数包含的参数个数以及各个参数的类型信息。
进一步地,所述步骤S3具体为:将第一文本文件中各个列的类型信息与第二文本文件中函数返回值类型进行比对匹配,且如果类型匹配,则生成数值比对的第一sql查询子句;如果类型不匹配,则不生成第一sql查询子句;将第一文本文件中各个列的类型信息与第二文本文件中内置函数所包含的各个参数的类型信息进行比对匹配,且如果各个列的类型信息与内置函数所包含的各个参数的类型信息均对应匹配,则将各个列的类型信息填入内置函数对应的参数表中,并生成第二sql查询子句;否则就不将各个列的类型信息填入内置函数对应的参数表中,且不生成第二sql查询子句;
所述步骤S4具体为:将生成的第一sql查询子句和第二sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。
进一步地,所述所有支持的内置函数包括操作符、聚合函数、OLTP函数或者OLAP函数。
本发明要解决的技术问题之二,在于提供一种包含数据库内置函数的sql查询语句自动生成系统,通过该系统可以实现将内置函数包含到sql查询语句中,且可以通过生成的sql查询语句来测试数据库的内置函数在复杂sql语句中的性能和功能。
本发明是这样实现技术问题之二的:包含数据库内置函数的sql查询语句自动生成系统,所述系统包括表信息获取模块、函数信息获取模块、信息匹配模块以及语句自动生成模块;
所述表信息获取模块,用于从数据库中获取要查询的表的表结构信息,且将获取的表结构信息保存成第一文本文件;
所述函数信息获取模块,用于从数据库中获取所有支持的内置函数的函数信息,且将获取的函数信息保存成第二文本文件;
所述信息匹配模块,用于对第一文本文件中的表结构信息与第二文本文件中的函数信息进行类型比对匹配,且将相同类型的信息封装成sql查询子句;
所述语句自动生成模块,用于将sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。
进一步地,在所述表信息获取模块中,所述从数据库中获取要查询的表的表结构信息具体为:从数据库中获取要查询的表的列名以及表中各个列的类型信息。
进一步地,在所述函数信息获取模块中,所述从数据库中获取所有支持的内置函数的函数信息具体为:从数据库中获取所有支持的内置函数的函数名称、函数返回值类型、函数包含的参数个数以及各个参数的类型信息。
进一步地,所述信息匹配模块具体为:将第一文本文件中各个列的类型信息与第二文本文件中函数返回值类型进行比对匹配,且如果类型匹配,则生成数值比对的第一sql查询子句;如果类型不匹配,则不生成第一sql查询子句;将第一文本文件中各个列的类型信息与第二文本文件中内置函数所包含的各个参数的类型信息进行比对匹配,且如果各个列的类型信息与内置函数所包含的各个参数的类型信息均对应匹配,则将各个列的类型信息填入内置函数对应的参数表中,并生成第二sql查询子句;否则就不将各个列的类型信息填入内置函数对应的参数表中,且不生成第二sql查询子句;
所述语句自动生成模块具体为:将生成的第一sql查询子句和第二sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。
进一步地,所述所有支持的内置函数包括操作符、聚合函数、OLTP函数或者OLAP函数。
本发明具有如下优点:1、通过利用表的列类型与数据库内置函数的类型进行比对匹配的方式,使得sql查询语句自动生成工具可以按照一定的逻辑和格式把内置函数包含到sql语句中生成sql查询语句,不仅可以节省人工手动编写sql语句的时间,而且可以提高sql语句的正确性;
2、通过包含数据库内置函数的sql语句,可以实现测试数据库的内置函数在复杂sql语句中的性能和功能,有助于增加sql查询语句自动生成工具的使用深度和广度。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明包含数据库内置函数的sql查询语句自动生成方法的执行流程图。
具体实施方式
请参照图1所示,本发明包含数据库内置函数的sql查询语句自动生成方法的较佳实施例,所述方法包括如下步骤:
步骤S1、从数据库中获取要查询的表的表结构信息,且将获取的表结构信息保存成第一文本文件;
在所述步骤S1中,所述从数据库中获取要查询的表的表结构信息具体为:从数据库中获取要查询的表的列名以及表中各个列的类型信息(如数值、文本、日期、字符等)。
步骤S2、从数据库中获取所有支持的内置函数的函数信息,且将获取的函数信息保存成第二文本文件;
在所述步骤S2中,所述从数据库中获取所有支持的内置函数的函数信息具体为:从数据库中获取所有支持的内置函数的函数名称、函数返回值类型、函数包含的参数个数以及各个参数的类型信息。
所述所有支持的内置函数包括操作符(如加号、减号、等号、逗号等)、聚合函数(如MAX、MIN、SUM、AVG等)、OLTP函数或者OLAP函数。
在具体实施时,还需要修改第一文本文件和第二文本文件的格式,以使第一文本文件和第二文本文件的格式与sql查询语句自动生成工具的输入格式相符合,以方便sql查询语句自动生成工具可以对第一文本文件和第二文本文件进行比对匹配。
步骤S3、对第一文本文件中的表结构信息与第二文本文件中的函数信息进行类型比对匹配,且将相同类型的信息封装成sql查询子句;
步骤S4、将sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。
其中,所述步骤S3具体为:将第一文本文件中各个列的类型信息与第二文本文件中函数返回值类型进行比对匹配,且如果类型匹配,则生成数值比对(如<,=,>等)的第一sql查询子句;如果类型不匹配,则不生成第一sql查询子句;
将第一文本文件中各个列的类型信息与第二文本文件中内置函数所包含的各个参数的类型信息进行比对匹配,且如果各个列的类型信息与内置函数所包含的各个参数的类型信息均对应匹配,则将各个列的类型信息填入内置函数对应的参数表中,并生成第二sql查询子句;否则就不将各个列的类型信息填入内置函数对应的参数表中,且不生成第二sql查询子句。例如,列包含A、B、C三种类型,而内置函数所包含的参数类型如果也包含A、B、C三种类型,就生成第二sql查询子句;而如果内置函数所包含的参数类型仅有A、B两种类型,则不生成第二sql查询子句。
所述步骤S4具体为:将生成的第一sql查询子句和第二sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。
在具体实施时,在sql查询语句自动生成工具对第一文本文件中的表结构信息与第二文本文件中的函数信息进行类型比对匹配后,会将类型相匹配的列和内置函数保存起来;接着,sql查询语句自动生成工具会利用随机算法随机获取类型相匹配的列和内置函数,并生成第一sql查询子句和第二sql查询子句,同时,将第一sql查询子句和第二sql查询子句与其它查询语句封装在一起,自动生成sql查询语句。
本发明包含数据库内置函数的sql查询语句自动生成系统的较佳实施例,所述系统包括表信息获取模块、函数信息获取模块、信息匹配模块以及语句自动生成模块;
所述表信息获取模块,用于从数据库中获取要查询的表的表结构信息,且将获取的表结构信息保存成第一文本文件;
在所述表信息获取模块中,所述从数据库中获取要查询的表的表结构信息具体为:从数据库中获取要查询的表的列名以及表中各个列的类型信息(如数值、文本、日期、字符等)。
所述函数信息获取模块,用于从数据库中获取所有支持的内置函数的函数信息,且将获取的函数信息保存成第二文本文件;
在所述函数信息获取模块中,所述从数据库中获取所有支持的内置函数的函数信息具体为:从数据库中获取所有支持的内置函数的函数名称、函数返回值类型、函数包含的参数个数以及各个参数的类型信息。
所述所有支持的内置函数包括操作符(如加号、减号、等号、逗号等)、聚合函数(如MAX、MIN、SUM、AVG等)、OLTP函数或者OLAP函数。
在具体实施时,还需要修改第一文本文件和第二文本文件的格式,以使第一文本文件和第二文本文件的格式与sql查询语句自动生成工具的输入格式相符合,以方便sql查询语句自动生成工具可以对第一文本文件和第二文本文件进行比对匹配。
所述信息匹配模块,用于对第一文本文件中的表结构信息与第二文本文件中的函数信息进行类型比对匹配,且将相同类型的信息封装成sql查询子句;
所述语句自动生成模块,用于将sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。
其中,所述信息匹配模块具体为:将第一文本文件中各个列的类型信息与第二文本文件中函数返回值类型进行比对匹配,且如果类型匹配,则生成数值比对(如<,=,>等)的第一sql查询子句;如果类型不匹配,则不生成第一sql查询子句;
将第一文本文件中各个列的类型信息与第二文本文件中内置函数所包含的各个参数的类型信息进行比对匹配,且如果各个列的类型信息与内置函数所包含的各个参数的类型信息均对应匹配,则将各个列的类型信息填入内置函数对应的参数表中,并生成第二sql查询子句;否则就不将各个列的类型信息填入内置函数对应的参数表中,且不生成第二sql查询子句。例如,列包含A、B、C三种类型,而内置函数所包含的参数类型如果也包含A、B、C三种类型,就生成第二sql查询子句;而如果内置函数所包含的参数类型仅有B两种类型,则不生成第二sql查询子句。
所述语句自动生成模块具体为:将生成的第一sql查询子句和第二sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。
在具体实施时,在sql查询语句自动生成工具对第一文本文件中的表结构信息与第二文本文件中的函数信息进行类型比对匹配后,会将类型相匹配的列和内置函数保存起来;接着,sql查询语句自动生成工具会利用随机算法随机获取类型相匹配的列和内置函数,并生成第一sql查询子句和第二sql查询子句,同时,将第一sql查询子句和第二sql查询子句与其它查询语句封装在一起,自动生成sql查询语句。
综上所述,本发明具有如下优点:1、通过利用表的列类型与数据库内置函数的类型进行比对匹配的方式,使得sql查询语句自动生成工具可以按照一定的逻辑和格式把内置函数包含到sql语句中生成sql查询语句,不仅可以节省人工手动编写sql语句的时间,而且可以提高sql语句的正确性;
2、通过包含数据库内置函数的sql语句,可以实现测试数据库的内置函数在复杂sql语句中的性能和功能,有助于增加sql查询语句自动生成工具的使用深度和广度。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (4)
1.一种包含数据库内置函数的sql查询语句自动生成方法,其特征在于:所述方法包括如下步骤:
步骤S1、从数据库中获取要查询的表的表结构信息,且将获取的表结构信息保存成第一文本文件;
所述从数据库中获取要查询的表的表结构信息具体为:从数据库中获取要查询的表的列名以及表中各个列的类型信息;
步骤S2、从数据库中获取所有支持的内置函数的函数信息,且将获取的函数信息保存成第二文本文件;
所述函数信息包括函数名称、函数返回值类型、函数包含的参数个数以及各个参数的类型信息;
所述所有支持的内置函数包括操作符、聚合函数、OLTP函数或者OLAP函数;
步骤S3、对第一文本文件中的表结构信息与第二文本文件中的函数信息进行类型比对匹配,且将相同类型的信息封装成sql查询子句;
步骤S4、将sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句;
所述步骤S3具体为:将第一文本文件中各个列的类型信息与第二文本文件中函数返回值类型进行比对匹配,且如果类型匹配,则生成数值比对的第一sql查询子句;如果类型不匹配,则不生成第一sql查询子句;将第一文本文件中各个列的类型信息与第二文本文件中内置函数所包含的各个参数的类型信息进行比对匹配,且如果各个列的类型信息与内置函数所包含的各个参数的类型信息均对应匹配,则将各个列的类型信息填入内置函数对应的参数表中,并生成第二sql查询子句;否则就不将各个列的类型信息填入内置函数对应的参数表中,且不生成第二sql查询子句。
2.根据权利要求1所述的包含数据库内置函数的sql查询语句自动生成方法,其特征在于:
所述步骤S4具体为:将生成的第一sql查询子句和第二sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。
3.一种包含数据库内置函数的sql查询语句自动生成系统,其特征在于:所述系统包括表信息获取模块、函数信息获取模块、信息匹配模块以及语句自动生成模块;
所述表信息获取模块,用于从数据库中获取要查询的表的表结构信息,且将获取的表结构信息保存成第一文本文件;
所述从数据库中获取要查询的表的表结构信息具体为:从数据库中获取要查询的表的列名以及表中各个列的类型信息;
所述函数信息获取模块,用于从数据库中获取所有支持的内置函数的函数信息,且将获取的函数信息保存成第二文本文件;
所述函数信息包括函数名称、函数返回值类型、函数包含的参数个数以及各个参数的类型信息;
所述所有支持的内置函数包括操作符、聚合函数、OLTP函数或者OLAP函数;
所述信息匹配模块,用于对第一文本文件中的表结构信息与第二文本文件中的函数信息进行类型比对匹配,且将相同类型的信息封装成sql查询子句;
所述语句自动生成模块,用于将sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句;
所述信息匹配模块具体为:将第一文本文件中各个列的类型信息与第二文本文件中函数返回值类型进行比对匹配,且如果类型匹配,则生成数值比对的第一sql查询子句;如果类型不匹配,则不生成第一sql查询子句;将第一文本文件中各个列的类型信息与第二文本文件中内置函数所包含的各个参数的类型信息进行比对匹配,且如果各个列的类型信息与内置函数所包含的各个参数的类型信息均对应匹配,则将各个列的类型信息填入内置函数对应的参数表中,并生成第二sql查询子句;否则就不将各个列的类型信息填入内置函数对应的参数表中,且不生成第二sql查询子句。
4.根据权利要求3所述的包含数据库内置函数的sql查询语句自动生成系统,其特征在于:
所述语句自动生成模块具体为:将生成的第一sql查询子句和第二sql查询子句与其它查询语句封装在一起,并自动生成sql查询语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810087128.4A CN108460092B (zh) | 2018-01-30 | 2018-01-30 | 包含数据库内置函数的sql查询语句自动生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810087128.4A CN108460092B (zh) | 2018-01-30 | 2018-01-30 | 包含数据库内置函数的sql查询语句自动生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108460092A CN108460092A (zh) | 2018-08-28 |
CN108460092B true CN108460092B (zh) | 2022-09-16 |
Family
ID=63239336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810087128.4A Active CN108460092B (zh) | 2018-01-30 | 2018-01-30 | 包含数据库内置函数的sql查询语句自动生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108460092B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069547B (zh) * | 2019-03-19 | 2021-10-12 | 天津字节跳动科技有限公司 | 在线数据库表格数据统计方法、装置、介质和电子设备 |
CN110222128B (zh) * | 2019-06-12 | 2022-10-14 | 浪潮软件集团有限公司 | 一种生成数据预置sql的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464862A (zh) * | 2007-12-21 | 2009-06-24 | 英业达股份有限公司 | 结构化查询语言生成系统及方法 |
CN103136263A (zh) * | 2011-11-23 | 2013-06-05 | 英业达股份有限公司 | 自动生成sql语句的方法 |
CN103744891A (zh) * | 2013-12-23 | 2014-04-23 | 大唐软件技术股份有限公司 | 一种数据查询方法和系统 |
-
2018
- 2018-01-30 CN CN201810087128.4A patent/CN108460092B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464862A (zh) * | 2007-12-21 | 2009-06-24 | 英业达股份有限公司 | 结构化查询语言生成系统及方法 |
CN103136263A (zh) * | 2011-11-23 | 2013-06-05 | 英业达股份有限公司 | 自动生成sql语句的方法 |
CN103744891A (zh) * | 2013-12-23 | 2014-04-23 | 大唐软件技术股份有限公司 | 一种数据查询方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108460092A (zh) | 2018-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755575B2 (en) | Processing database queries using format conversion | |
US9009140B2 (en) | Optimization of database query | |
CN104123374B (zh) | 分布式数据库中聚合查询的方法及装置 | |
US8606803B2 (en) | Translating a relational query to a multidimensional query | |
CN102682118B (zh) | 一种多维数据模型访问方法及装置 | |
CN106066895B (zh) | 一种智能查询系统 | |
US9785725B2 (en) | Method and system for visualizing relational data as RDF graphs with interactive response time | |
CN114625732B (zh) | 基于结构化查询语言sql的查询方法和系统 | |
CN103729392A (zh) | 查询优化方法及查询编译器 | |
TWI706260B (zh) | 基於行動端NoSQL資料庫的索引建立方法及裝置 | |
US20110153582A1 (en) | Handling of classification data by a search engine | |
CN108460092B (zh) | 包含数据库内置函数的sql查询语句自动生成方法及系统 | |
CN104714974A (zh) | 一种查询语句解析与再处理的方法和装置 | |
CN110362591B (zh) | 一种报表展现方法和装置 | |
CN107203525B (zh) | 数据库的处理方法和装置 | |
CN108399196B (zh) | 数据库sql语句自动生成工具的sql自动执行方法及系统 | |
CN109213776B (zh) | 一种报表展现方法和装置 | |
CN105808228A (zh) | 动态配置报表的生成方法 | |
CN108008947B (zh) | 一种编程语句的智能提示方法、装置、服务器及存储介质 | |
CN108388589B (zh) | 一种数据库sql查询语句自动生成的装置 | |
US20070282804A1 (en) | Apparatus and method for extracting database information from a report | |
US20220121631A1 (en) | Automatic generation of a data model from a structured query language (sql) statement | |
US8793268B1 (en) | Smart key access and utilization to optimize data warehouse performance | |
CN112445867A (zh) | 一种数据关系智能分析方法和系统 | |
CN114925142A (zh) | 一种orm框架的多类型数据库兼容方法、装置、设备及介质 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 350000 21 / F, building 5, f District, Fuzhou Software Park, 89 software Avenue, Gulou District, Fuzhou City, Fujian Province Applicant after: FUJIAN SINOREGAL SOFTWARE CO.,LTD. Address before: Floor 20-21, building 5, area F, Fuzhou Software Park, 89 software Avenue, Gulou District, Fuzhou City, Fujian Province 350000 Applicant before: FUJIAN SINOREGAL SOFTWARE CO.,LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |