一种数据库动态查询的方法和系统的制作方法

文档序号:6613052阅读:135来源:国知局
专利名称:一种数据库动态查询的方法和系统的制作方法
技术领域
本发明涉及数据库应用领域,特别是涉及一种数据库动态查询的方法和系统。
背景技术
在目前的很多软件应用系统(例如,J2EE企业应用等)中,经常需要把 程序和数据库结合起来进行使用,即经常面临访问数据库的问题,而数据库查 询则是最常用的一个操作。并且,由于企业应用中业务的复杂性和多变性,数 据库查询是使用频率非常高的功能模块,导致对数据查询模块的性能、健壮性 和扩展性要求比较高。现有技术中, 一般采用JDBC(Java Database Connectivity) API通过编程实 现数据库查询功能模块。JDBCAPI是Java语言访问数据库的一种规范, 一套 Java数据库的编程接口 ,是一组标准的Java语言中的接口和类,使用这些接 口和类,Java客户端程序可以访问各种不同类型的数据库。比如建立数据库连 接、执行SQL语句进行数据的存取操作等。但是这种编程比较低级,导致工 作量大,并且容易出错;其次,由于编程代码量过多,还导致了应用程序代码 和数据访问代码之间的依赖过多,代码的适应性和可扩展性较差,不利于维护。 这些缺陷都难以满足目前数据库查询访问的需求,导致效率较低。现有技术还经常使用数据库视图技术来解决上述问题。视图具有以下特点A、 一些被经常使用的查询可以被定义为视图,从而使得用户不必为以后 的操作每次指定全部的条件,简化了用户对数据的理解,也可以筒化他们的操 作。B、 通过视图用户只能查询和修改他们所能见到的数据,数据库中的其它 数据则既看不见也取不到;即可以保证数据安全性。C、 使用数据库视图技术后,程序可以建立在视图之上,从而程序与数据 库表被视图分割开来,即视图可以使应用程序和数据库表在一定程度上独立。但是数据库视图技术仍然存在一些不可接受的缺陷1、 数据库视图技术只能按照SQL编写逻辑,没有面向对象的编程接口, 不利于用户理解,不能够方便的设置条件参数。2、 —见图定义完成后,不能在运行期动态修改。而由于大型数据库应用程 序中经常需要使用到非常多的数据库查询方式,业务复杂且随着业务的扩展而 较多变化,这么多的查询语句定义和维护工作量都很大;而且无论在设计期定 义多少种查询方式,都不可能把未来所有的查询方式穷举并定义出来,因此如 果外部环境出现新的变化时,而视图又不能动态修改,则应用程序难以适应查 询需求的变化。3、 视图适应能力差,工作效率低下,不易于维护; 一般视图需要每次把 可能用到的所有字段都查询出来,这样导致查询数据量倍增,运行效率低;反 之如果只查特定场景所需字段则通用性不佳,需要针对每一种场景分别设计视 图,导致维护工作量大量增加。当系统中的数据表关系发生变化,或者查询需 求发生变化时,所有相关的视图都需要修改,出错机率较大。4、 视图在整个应用层共享,不能实现会话级隔离,有可能导致各个会话 之间的相互影响。总之,目前需要本领域技术人员迫切解决的一个技术问题就是如何能够 创新的提出一种数据库查询机制,可以非常方便的应对复杂多变的数据库查 询,并能够实现会话级的隔离,以提高用户查询数据库的效率。发明内容本发明所要解决的技术问题是提供一种数据库查询的方法和装置,可以非 常方便的在运行期对查询依据进行修改,并能够实现会话级的隔离,以提高用 户查询数据库的效率。为了解决上述问题,本发明公开了一种数据库动态查询的方法,包括依 据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包 括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于 查询子对象的描述;依据所获取的元数据信息,生成查询对象;调用参数接口, 依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;依据查询对象及其参数修改信息,生成SQL查询语 句;执行所述SQL查询语句,完成数据库查询,返回数据结果集。
优选的,所述预置的元数据关于查询子对象的描述中还可以包括关于多 个查询子对象关系的描述。优选的,所述调用参数接口对查询子对象进行修改的内容还可以包括修 改多个查询子对象的关系。优选的,所述动态查询方法还可以包括将直接依据查询获取的元数据信 息而生成的查询对象置于緩存中,并复制生成一新的查询对象实例返回给调用 者使用。优选的,所述动态查询方法还可以包括当前调用者使用的查询结束后, 销毁该用户使用的查询对象实例。依据本发明的另一优选实施例,还公开了一种数据库动态查询的装置,包 括以下部件元数据查找模块,用于依据用户的指定信息,从预置的多个元数据中查找 相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、 关于排序条件的描述以及关于查询子对象的描述;查询对象生成模块,用于依据所获取的元数据信息,生成查询对象;参数修改模块,用于调用参数接口,依据实际需求修改查询字段、过滤条 件、排序条件及查询子对象四项内容中的任一项或者任意组合项;SQL查询语句生成模块,用于依据查询对象及其参数修改信息,生成SQL 查询语句;查询执行模块,用于执行所述SQL查询语句,完成数据库查询,返回数 据结果集。优选的,所述预置的元数据关于查询子对象的描述中还包括关于多个查 询子对象关系的描述。优选的,所述参数修改模块对查询子对象进行修改的内容还包括修改多 个查询子对象的关系。优选的,所述动态查询装置还可以包括查询对象实例创建模块,用于将 所述查询对象生成才莫块得到的查询对象置于緩存中,并复制生成一新的查询对 象实例返回给调用者使用。优选的,所述动态查询装置还可以包括查询对象实例销毁^t块,用于当前调用者使用的查询结束后,销毁该用户使用的查询对象实例。与现有^&术相比,本发明具有以下优点为了解决查询方式多的问题,本发明提供了一种解决途径,应用程序可以 把各种查询方式分门别类定义成QUERY元数据,在运行时传入过滤参数等来 实现不同的查询,这样大大减少了查询语句的数量,但是还能够满足纷繁复杂 的查询需求;而且使用面向对象的方式编码也更方便。同时本发明提供的设计思想及管理方式则可以很好地解决查询需求变化 的问题,动态QUERY在运行期可以动态改变QUERY对象内部结构,包括查 询哪些字段、关联哪些数据库表、以及使用哪些过滤条件等,从而改变最终查 询方式,这样一来显著地降低了应用程序维护的复杂度,能够大幅度的提高查 询机制的适应性和效率。


图1是本发明一种数据库动态查询的方法实施例的步骤流程图; 图2是本发明 一种数据库动态查询的装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。本发明可用于众多通用或专用的计算系统环境或配置中。例如个人计算 机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、包 括以上任何系统或设备的分布式计算环境等等。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例 如程序模块。 一般地,程序模块包括执行特定任务或实现特定抽象数据类型的 例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本 发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来 执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地 和远程计算机存储介质中。本发明中的"对象"一词属于本领域的通用术语,在本说明书中就不对其进 行详细解释了。 一般的,在Java中, 一个类, 一个方法, 一个变量都可以作 为对象,其中,有些对象可以直接去用(比如基本变量类型,或一些静态的类、 方法、变量等),而有些对象不可以直接去用,需要创建这个对象的实例(这样, 既能实现对象的功能,又不会直接破坏对象的构造)。参照图1,示出了本发明一种数据库动态查询的方法实施例,可以包括步骤IOI、依据用户的指定信息,从预置的多个元数据中查找相应的元婆: 据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条 件的描述以及关于查询子对象的描述;步骤102、依据所获取的元数据信息,生成查询对象;步骤103、调用参数接口,依据实际需求修改查询字段、过滤条件、排序 条件及查询子对象四项内容中的任一项或者任意组合项;步骤104、依据查询对象及其参数修改信息,生成SQL查询语句;步骤105、执行所述SQL查询语句,完成数据库查询,返回数据结果集。由于本发明创新的提出了一种QUERY机制,因此,为了便于说明,在本 说明书中一般称之为QUERY元数据,QUERY对象(步骤102中的查询对象)。步骤101中的元数据是关于数据的数据;在程序中元数据不是被加工的对 象,而是通过其值的改变来改变程序的行为的数据。它在运行过程中起着以解 释方式控制程序行为的作用。例如,在设计期,技术人员可以对应用需求中的 数据查询格式进行抽象建才莫,用面向对象的语言对数据查询进行描述,并保存 为XML格式的元数据。该XML文件主要是对原有平台的数据查询格式的一 种抽象归类后形成的描述性数据。本实施例中提及的"设计时"和"运行时"属于本技术领域的专业术语,其 中,"设计时"是指软件工程师设计QUERY机制的软件工程阶段;而"运行时" 是指该QUERY机制被用户调用而实际运行的软件工程阶段。下面对元数据的预置过程进行简单描述。其主要目的是针对不同的数据查 询需求要分别设定QUERY元数据,因为通常不同的QUERY元数据之间所指 定的实体表关联关系是不同的,面向的查询用户也不同,所以要分类设定,以 示区别。例如,对于销售订单和员工表,可以关联起来定义一个QUERY元数
据,查询销售订单和相关的销售人员信息;而采购订单和员工表也可以关联起 来定义一个QUERY元数据,用于查询釆购订单和相关采购人员信息。这两种 查询在查询目的上显然是不同的,使用者也不同,可以认为是两类查询需求。 具体在使用中根据不同的应用场景可以有所变化,如某些情况下只查询部分字 段,某些情况下查询条件不同等,但基本都可以归在这两类查询之中。步骤101中的用户指定信息,可以为QUERY元数据的关4建值,例如, QUERY元数据等。为了便于查询,每个QUERY元数据均应具有一个唯一的 KEY,用户通过KEY来指定期望的QUERY元数据。步骤104中的SQL是Structured Query Language(结构化查询语言)的缩写。 SQL是专为数据库而建立的操作命令集,是高级的非过程化编程语言,允许 用户在高层数据结构上工作。其不要求用户指定对数据的存放方法,也不需要 用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统 可以使用相同的SQL语言作为数据输入与管理的接口。由于SQL语言属于本 领域的公知技术,在此不再详述。对于步骤104自动生成SQL语句的过程,也属于本领域的常用技术。例 如,本领域技术人员经常会通过O-RMapping框架技术生成SQL语句。ORM, 即Object-Relation Mapping,它的作用是在关系型数据库和对象之间作一个映 射,这样,技术人员在具体的操作数据库的时候,就不需要再去和复杂的SQL 语句打交道,只要像平时操作对象一样操作它就可以了。例如,利用O/R Mapping保存、删除或者读取对象,而由O/R Mapping负责生成SQL语句即 可。在图1所示的实施例中,通过步骤103的参数修改,就可以实现满足多种 需求的动态查询。 一般的,数据查询就是从大量的数据中选出用户需要的那部 分数据;但是在实际应用中出于性能考虑,不可能每次都把所有的数据字段都 查询出来返回给用户(会导致查询过程和传输过程冗长),而是根据实际需要 来查询,即存在用户选择查询字段的情况,所以就产生了动态查询的需求。例如在某个场景中用户可能需要查询用户名A和地址信息B,在第二个 场景中查询的是用户名A和电话C,第三个场景中用户查询的可能是用户名A 和岗位名称D。而在传统查询方式中,所有的查询都需要分别定义不同的查询
来实现;而本发明则只需要预置一种QUERY元数据就可以满足上述的所有要 求了;因为不管查询字段怎么变,上述的几种查询其核心部分<数据库表之间 关联关系>是没有发生变化的,可以认为是针对同一类需求的。由于在QUERY 元数据中已经把数据库表间的关联关系等信息都设置好了 ,运行时通过类似 SetQueryField()的接口 (用于修改查询字段的接口示例)传入运行期参数,即 可输出只包含指定查询字段的SQL语句,从而实现动态查询。当所需查询的数据库表(查询子对象)仅为 一个时,则QUERY元数据中 所述关于查询子对象的描述,仅仅描述该数据库表即可。而当所需查询的数据 库表(查询子对象)为多个(两个或者两个以上)时,则所述预置的元数据关 于查询子对象的描述中还可以包括关于多个查询子对象关系的描述。而相应的,所述调用参数接口对查询子对象进行修改的内容,则还可以包 括修改多个查询子对象的关系。实际上,由于数据库表之间的内在关系是由 其存储的数据或者字段自身而决定的,这里所述的修改实际上就是添加这些已 经存在的数据库表关系而已;但是由于原来的元数据中关于查询子对象的描述 中并没有相应关系的描述,所以称之为"修改"。从技术原理上而言,如果能够动态调整查询字段、过滤条件、排序条件以 及查询指向的数据库表(包括各表之间的关系),则实际上,只要设置一个 QUERY元数据就可以满足各种情况的查询需求,因为任何查询都可以分解为 上述四项元素的组合。但是,本发明优选的,仍然需要事先预置多个QUERY元数据,以满足基 本种类的查询需求。因为如果每次查询都需要添加数据库表的关系,则对查询 人员的技术要求过高,并要求对底层各个数据库表的关系都很清楚,实际中很 难应用。因此,在本发明的优选实施例中,针对数据库表的关系的修改主要是 针对一些特殊的、非常规的查询需求的,目的在于弥补一些特殊情况下无法覆 盖的查询需求。在本发明的另 一优选实施例中,将直接依据查询获取的元数据信息而生成 的查询对象置于緩存中,并复制生成一新的查询对象实例返回给调用者使用。 这样的技术改进,可以保证各个用户的每一次查询在会话期间都是隔离的,不 会相互影响。进而,如果当前调用者使用的查询结束,则销毁该用户使用的查
询对象实例。当然,緩存中的原始QUERY对象则可以继续保留,以提供给下 一个会话使用。下面以 一个具体例子对本发明进行更进一步的描述。 例如,在设计期,用户QUERY ;陂定义为元数据并保存成XML文件。 QUERY元数据中描述了以下主要内容Selector 描述SQL语句中的查询字段。Filter 描述SQL语句中的过滤条件。Order 描述SQL语句中的排序条件。SubObject 描述SQL语句中的子对象。本发明的动态QUERY机制可以设计为支持按照面向对象的方式来管理 和执行查询,其内部按照SQL语法维护了 Selector、 Filter、 Order及SubObject 等内容,其中Selector描述了所有的查询字段,即最终要输出的数据库字段列 表;Filter用于描述过滤条件。外部用户可以在运行期通过修改和设置过滤条 件或者查询字段来改变SQL查询的输出内容。本发明的动态QUERY机制支持对若干个数据库表进行关联查询,其内部 定义了 SubObject对象来描述各个不同的数据库表,并用一个SubObjects集合 来管理所有的SubObject子对象。各个表之间的关系用Relation对象来描述(包 含在SubObject对象中),每一个Relation描述了两个SubObject间的连接方式 及关联字段等信息。运行期外部用户可以通过修改SubObjects对象集合及 Relation关系来动态修改表关联关系,从而影响查询输出记录内容。在实际使用中, 一次完整的数据库查询流程通常如下1、 用户指定要查询的QUERY,查找相应的元数据信息;2、 根据元数据信息装配JAVA内存对象;3、 用户根据需求调用参数接口,动态修改QUERY的查询方式;4、 根据内存QUERY对象生成SQL查询语句;5、 执行SQL数据库查询,返回数据结果集。当外部用户需要使用动态QUERY进行查询时,首先要调用系统接口创建
QUERY对象,系统会4艮据QUERY名称/人系统XML文件中读入并装配 QUERY对象。为保持原始对象状态,QUERY引擎将把原始的QUERY对象 放置到緩存中,并克隆一个新的QUERY对象实例返回给调用者使用。因此动 态QUERY在每一次查询会话期间都是隔离的,不会相互影响。QUERY创建之后应用就可以使用对象进行数据库查询;此时该对象中已 经装配了系统设计期定义的各项参数内容,包括预定义的查询字段、数据库表 实体名、表之间的关联关系、查询过滤条件等;还可以包括一些其他的运行期 内存对象。用户可以直接使用QUERY进行查询才喿作获取数据,也可以动态的 修改QUERY内容,按照应用的需求进行各种新的自定义查询。主要操作方式 可以为为调用者创建一个参数集合对象,设置对象在其中加入要修改的内容, 例如修改Selector改变查询字段,或修改Filter来改变过滤条件;甚至修改 SubObjects和Relation来修改数据表关系等;该参数对象被传入QUERY对象 后,将被用于动态改变QUERY内部结构,按照新的方式进行数据库查询。本次查询结束后,则可以释放QUERY对象,系统将把用户使用的对象实 例销毁。但緩存中的原始QUERY对象将继续保留,给下一个会话使用。举例来说,设有一个表关联查询,用户在不同的环境下希望有以下几种 查询查询字段A+B,查询字段A+C,查询字段A+D,以后还可能会增加新 的查询方式。假设本发明预置了一个查询字段包括A+B+C+D的QUERY元数据(一般 预置常用的字段即可,不常用的字段可以在运行时期动态添加),由于数据查 询的格式被用内存对象结构的方式来描述,因此可以在运行期调用接口来决定 具体的查询字段。例如,使用与下面类似的接口方式SetQueryField(A+B)或SetQueryField(A+C) 或SetQueryField(A+D)即可实现不同方式的查询;当然,还可以使用类似的接口方式 AddNewTable ( TableA, TableB )来动态添加原来没有的表关联关系;而这些修改在不同的用户会话间是隔 离的。
明在此并不需要加以限定。再例如,通过本发明的步骤101-104,可以得到如下的SQL语句 Fi OM r一朋一户酒"ce爿S 'Ti 譜WC五"(9i D五i 万7 'Ti OKWC五"FiVwwZ^r JSC采用自然语言对其简单说明如下上述SQL语句是一个针对省份及其所 属国家资料的查询,国家和省份表之间通过FCountryID关联(即SubObject及 其关联关系),查询字段为省份ID、省份名称、省份所属的国家名称(即 Selector部分),查询条件是省^f分表记录的Fnumber (编号)like , 1,且国家名 称=,中国,(即Filter部分);排序条件是省份表的编号(即Order部分)。参照图2,示出了一种数据库动态查询的装置实施例,具体可以包括 元数据查找模块201,用于依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于查询子对象的描述;查询对象生成模块202,用于依据所获取的元数据信息,生成查询对象; 参数修改模块203,用于调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;SQL查询语句生成模块204,用于依据所述的查询对象及其参数修改信息,生成SQL查询语句;查询执行才莫块205,用于执行所述SQL查询语句,完成数据库查询,返回数据结果集。优选的,所述预置的元it据关于查询子对象的描述中还包括关于多个查 询子对象关系的描述。其中,所述参数修改模块对查询子对象进行修改的内容 还包括修改多个查询子对象的关系。在本发明的另一优选实施例中,还可以包括查询对象实例创建才莫块206, 用于将所述查询对象生成模块得到的查询对象置于緩存中,并复制生成一新的
查询对象实例返回给调用者使用。进而,还可以包括查询对象实例销毁模块 207,用于当前调用者使用的查询结束后,销毁该用户使用的查询对象实例。综上所述,本发明可以让数据库结构实现逻辑上的可扩充性当数据库系 统的物理信息(主要指表结构、表数据)已经完成后,如果由于新的业务要求 导致表数据的不够,这时就可以采用QUERY技术进行扩充(扩充数据库表及 之间的关系),通过QUERY中强大的SQL来完成此功能。采用本发明可以筒化数据库系统的内部结构及其关系,因为物理表很多时 候是以数据库范式原则分析建立的,尤其在数据冗余处理方面与实际业务会产 生较大的分歧,采用QUERY可以将多个表通过SQL联合起来,产生与实际 业务相适应的数据结果,这极大方便了软件开发及数据查询,因为利用QUERY 的SQL写起来也比较简单。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实 施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部 分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所 以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上对本发明所提供的 一种数据库动态查询的方法和装置,进行了详细介例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的 一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变 之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、 一种数据库动态查询的方法,其特征在于,包括 依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以 及关于查询子对象的描述;依据所获取的元数据信息,生成查询对象;调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询 子对象四项内容中的任一项或者任意组合项;依据查询对象及其参数修改信息,生成SQL查询语句; 执行所述SQL查询语句,完成数据库查询,返回数据结果集。
2、 如权利要求1所述的方法,其特征在于,所述预置的元数据关于查询 子对象的描述中还包括关于多个查询子对象关系的描述。
3、 如权利要求2所述的方法,其特征在于,所述调用参数接口对查询子 对象进行修改的内容还包括修改多个查询子对象的关系。
4、 如权利要求l所述的方法,其特征在于,还包括 将直接依据查询获取的元数据信息而生成的查询对象置于緩存中,并复制生成一新的查询对象实例返回给调用者使用。
5、 如权利要求4所述的方法,其特征在于,还包括当前调用者使用的 查询结束后,销毁该用户使用的查询对象实例。
6、 一种凄t据库动态查询的装置,其特征在于,包括 元数据查找模块,用于依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于查询子对象的描述;查询对象生成模块,用于依据所获取的元数据信息,生成查询对象; 参数修改模块,用于调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;SQL查询语句生成模块,用于依据查询对象及其参数修改信息,生成SQL查询语句;查询执行模块,用于执行所述SQL查询语句,完成数据库查询,返回数 据结果集。
7、 如权利要求6所述的装置,其特征在于,所述预置的元数据关于查询 子对象的描述中还包括关于多个查询子对象关系的描述。
8、 如权利要求7所述的装置,其特征在于,所述参数修改模块对查询子 对象进行修改的内容还包括修改多个查询子对象的关系。
9、 如权利要求6所述的装置,其特征在于,还包括 查询对象实例创建^f莫块,用于将所述查询对象生成模块得到的查询对象置于緩存中,并复制生成一新的查询对象实例返回给调用者使用。
10、 如权利要求9所述的装置,其特征在于,还包括 查询对象实例销毁模块,用于当前调用者使用的查询结束后,销毁该用户使用的查询对象实例。
全文摘要
本发明提供了一种数据库动态查询的方法,包括依据用户的指定信息,从预置的多个元数据中查找相应的元数据;所述元数据包括关于查询字段的描述、关于过滤条件的描述、关于排序条件的描述以及关于查询子对象的描述;依据所获取的元数据信息,生成查询对象;调用参数接口,依据实际需求修改查询字段、过滤条件、排序条件及查询子对象四项内容中的任一项或者任意组合项;依据查询对象及其参数修改信息,生成SQL查询语句;执行所述SQL查询语句,完成数据库查询,返回数据结果集。本发明可以通过在运行时传入过滤参数等来实现不同的查询,能够满足纷繁复杂的查询需求;并显著降低应用程序维护的复杂度,提高查询机制的适应性和效率。
文档编号G06F17/30GK101145162SQ20071016602
公开日2008年3月19日 申请日期2007年10月31日 优先权日2007年10月31日
发明者俊 张 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1