一种数据库表记录构造与检查的方法及其装置的制作方法

文档序号:6558880阅读:251来源:国知局

专利名称::一种数据库表记录构造与检查的方法及其装置的制作方法
技术领域
:本发明涉及一种数据库技术,特别是对数据库表记录构造与检查的方法和装置。
背景技术
:目前业务软件产品中大量采用工具命令语言脚本进行自动化测试。在自动化测试脚本中直接应用结构化查询语言SQL语句执行INSERT和SELECT命令来构造和检查表记录。SQL语句形式为DBSQLSCUDB“insertinto表名(字段1,字段2,......)values(字段1值,字段2值,......)”;set临时表[DBSQLSCUDB“select字段1,字段2,......from表名where条件”]。在SQL语句中,构造表记录时必须严格按表结构定义的字段顺序插入全部字段的各字段值,如果不输入全部字段值,将可能会在检查表记录时出错;检查表字段值时逐个比对字段名,直到找到为止。用户每次构造或检查表记录时都必须重新编写SQL语句及生成复杂的脚本命令。在软件的自动化测试过程中,经常要对软件产品中数据库中的数据库表增加记录或对表记录的各字段值进行检查,特别在数据库表的结构复杂,字段数超过100个,并且这些字段的默认值经常随版本变化的情况下,构造表记录或检查表字段值时自动化脚本就变得复杂和繁琐,脚本可读性差;如果字段名没有对应表结构,值容易错位,而且每次都要关注用户不关心的字段值。数据检查不全面,无法检查用户没有输入字段的值,容易造成测试不充分引起漏测问题;相应地编写和维护脚本困难,如果表字段或字段值改变,构造表记录的脚本必须更新否则无法重用,其灵活性差,测试效果不理想和成本较高。
发明内容本发明提供一种数据库表记录的构造和检查的方法,用以解决利用现有技术在较为复杂的数据库表中增加记录时存在操作复杂繁琐,而且容易出错的问题;进一步解决在软件产品自动化测试过程中,在数据库表中构造和检查记录存在操作繁琐、容易出错和灵活性差的问题。本发明是将数据库表的表结构字段及其默认值分离出来放入配置文件进行统一集中管理与维护,对表记录的插入及检查提供统一的接口命令,通过接口命令调用配置文件,形成SQL语句实现对表记录的插入及检查的操作。当表结构发生变化时更新配置文件即可,改动脚本较少。本发明提供一种构造表记录的方法,该方法具体步骤为A、从操作命令中获取需要操作的数据库表标识,需要由用户赋值的字段名及其指定值。B、根据所述数据库表标识调用对应的配置文件,该配置文件中包含所述数据库表的所有字段及对应的默认值。C、从所述配置文件中获取操作命令中未指定的字段及对应的默认值,并将其与操作命令中指定的字段及对应值按数据库表中字段顺序生成插入语句。D、执行所述插入语句在数据库表中生成记录。构造表记录的方法还可包括步骤在生成插入命令之前,进一步判断配置文件的字段中是否包含有操作命令中的字段,若是,则执行步骤C,否则结束处理流程。本发明提供一种构造表记录的装置,该装置包括接收装置、查找装置、命令装置、执行装置和存储装置。存储装置,用于存储配置文件,所述配置文件中包含有数据库表的所有字段及对应的默认值。接收装置,用于从操作命令中获取输入的数据库表标识,字段名及其对应值,将操作命令指定信息传入查找装置。查找装置,用于根据所述数据库表标识调用存储装置中对应的配置文件。命令装置,用于从所述查找装置查到的配置文件中获取操作命令中未指定的字段及对应的默认值,并将其与操作命令中指定的字段及对应值按数据库表中字段顺序生成插入语句。执行装置,用于根据命令装置中生成的命令执行向存储装置中的数据库插入一条表记录的操作。所述构造表记录的装置还包括检错装置,用于在生成插入命令之前,进一步判断配置文件的字段中是否包含有操作命令中的所有字段,若是,则启动命令装置,否则结束装置运行。本发明提供一种检查数据库表记录的方法,该方法具体步骤为A、从操作命令中获取需要操作的数据库表标识,用户指定的字段名和对应的预期值。B、利用获取的数据库表字段生成查询命令。C、执行所述查询命令实现从数据库中查找表记录,并获得需要查询的字段的值。D、将从数据库表中获得的字段的值与对应的预期值进行比较,完成检查表记录的操作。所述检查数据库表记录的方法,在执行步骤B前进一步包括步骤A1、判断用户是否需要检查所有字段,若是,则进行步骤A2,否则,进行步骤B。A2、根据所述数据库表标识调用包含该数据库表的所有字段的配置文件,从中读取操作命令中未指定的字段及对应的默认值,并将默认值作为预期值,继续步骤B。所述检查数据库表记录的方法还可包括步骤在生成查询命令之前,进一步判断配置文件的字段中是否包含操作命令中的所有字段,若是,则执行步骤B,否则结束处理流程。本发明提供一种数据库表记录的检查装置,该装置包括接收装置、命令装置、执行装置、比对装置和存储装置;存储装置,用于存储配置文件,所述配置文件中包含有数据库表的所有字段及对应的默认值;接收装置,用于从操作命令中获取输入的数据库表标识,字段名和对应的预期值;命令装置,用于根据需要查询的字段生成查询命令;执行装置,用于执行命令装置中生成的查询命令,在所述数据库的数据表中查找所需的表记录以获得指定字段对应的值;比对装置,用于将所述执行装置获得的字段的值与对应的预期值进行比对。所述检查数据库表记录的装置还包括查找装置,用于根据所述数据库表标识从所述存储装置中调用相应的配置文件,当用户需要检查所有字段时,从配置文件中获取所述操作命令中未指定的其他需要查询的字段及默认值,并将字段传送给命令装置,将字段的默认值作为预期值。检错装置,用于在生成查询命令之前,进一步判断配置文件的字段中是否包含有操作命令中的字段,若是,则启动命令装置,否则结束装置运行。本发明有益效果如下1、实现测试脚本逻辑与数据分离,测试脚本数据集中维护,极大地增强脚本的重用能力。2、所有数据库表记录插入与检查采用简单统一的接口函数,隐藏了形成SQL语句的繁琐过程,使脚本更加简单,易于维护。3、用户只需输入关注的字段信息即可插入一条记录,减少输入量及出错率。4、数据库表记录插入与检查时字段名与其值一一对应,增加了脚本的可读性,并且对字段名进行了合法性检查,避免出现低级SQL语句错误。5、数据检查更全面,更灵活。用户只需输入要检查的表字段名与预期值即可实现只检查输入的字段,也可以以默认值作为预期值检查表中其它字段值,适合大数据库表的检查。6、自动建立自动化测试环境,减少了测试数据环境的搭建工作量。图1为本发明中构造表记录的装置图;图2为本发明中数据库表构造记录流程示意图;图3为本发明中检查表记录的装置图;图4为本发明中数据库表记录检查流程示意图。具体实施例方式为了解决现有技术中对于复杂的数据库表,用户输入量大导致的操作复杂繁琐和容易出错等问题,本发明将数据库表的表结构字段及其默认值从数据库中分离出来,放入配置文件,进行统一集中管理与维护;在对数据库进行插入记录操作时,用户仅提供关心的数字库字段及对应的值,系统自动从配置文件中读取其余字段及默认值生成插入命令完成插入记录操作。相应的,还可以利用配置文件对用户提供的字段进行错误性检查以及对数据库表记录进行检查。本实施例以软件自动化测试过程中在数据库的表中构造和检查记录为例进行说明。为了维护和操作方便,在本实施例中根据各数据库表的表结构字段及其默认值建立对应的配置文件,配置文件的制作方法为建立数据库时首先定义表结构,同时指定表字段的默认值,使用目前已有技术将目标数据库中的数据库表的表结构按下面格式导出成文本文件,即配置文件。由于使用工具导出,所以配置文件中的表结构严格按照数据库表的内容,字段名与其值一一对应,并且严格按照表结构顺序排列。配置文件的格式如下表名1(字段名1=默认值字段名2=默认值字段名3=默认值……)表名2(字段名1=默认值字段名2=默认值字段名3=默认值……)……例如transfer_cfg(scallingnoidx=-1scardtypeidx=-1scardtypeidx2=-1sservicelevel=0sservicelevel2=0scardtype=0scardtype2=0nservicekey=230stransfercond=0stransfercond2=0ntransferlinit=200ntransferlinit2=200sbountytfflg=0smodiresperiodflg=0stransferpartflg=0stransinorout=1saccumifflg=0sbountytfmode=0stransopenflg=0useridentifier=-1sifbindtransflag=0nfixextendtime=0)tcppro_trans(useridentifier=-1saccountnumber=0scallingnumber=-1nservicekey=230……)在本实施例中通过定义接口函数,在该函数中封装SQLINSERT语句来实现向数据库表中插入记录的操作。该函数首先读入用户输入的数据库表字段及对应的指定值,然后从配置文件中读入数据库表的全部字段名及其默认值,来自两个渠道的信息按照数据库表的结构结合成新列表传递给INSERT语句,执行该插入命令来实现向数据库表插入一条记录。在本实施例中用于插入记录的函数的函数名为AddTableRecord,包括参数errinfo、tablename及args,其中errinfo为错误信息返回参数,用于脚本命令,tablename表示表名,args是可变参数,欲插入的数据库表记录的字段名及其值列表。参见图1,本实施例中一种可以实现构造数据库表记录的装置包括接收装置101、查找装置102、检错装置103、命令装置104、执行装置105以及存储装置106。存储装置106,用于存储配置文件和数据库等,所述配置文件中包含有数据库表的所有字段及对应的默认值,此装置可以是软盘、硬盘、磁带等存储设备。接收装置101,用于从操作命令中获取输入的数据库表标识,字段名和对应的值,然后将输入信息传给查找装置102。查找装置102,用于根据从所述操作命令中获取的数据库表标识调用存储装置106中对应的配置文件,读取数据库表字段。检错装置103,用于进一步判断配置文件的字段中是否包含操作命令中的所有字段,若是,则启动命令装置104,否则结束装置运行。命令装置104,用于从所述查找装置102查到的配置文件中获取操作命令中未指定的字段及对应的默认值,并将其与操作命令中指定的字段及对应值按数据库表中字段顺序生成插入语句。执行装置105,用于根据命令装置104中生成的插入命令执行向存储装置106中的数据库插入一条表记录的操作。下面结合例1对本实施例中在数据库表中插入记录进行详细描述例1、函数名为AddTableRecord。用户希望向数据库表User_info中插入一条记录,要求字段Username为John,Account为13500011188,其余字段用户不关心,此表包含150个字段,表结构如下User_info(Userid=001Username=AAccount=0Useradd=0……注共150个字段)参见图2,本实施例中实现构造数据库表记录的方法流程如下步骤210提供数据库表名、需要赋值的字段名及指定值,执行调用接口函数的操作命令。所述操作命令可以由用户输入,也可以当前执行程序中所包含的命令。对于例1,将表名User_info代替参数tablename,将插入数据Username、John、Account、13500011188相应地代替args,形式为Username=John,Account=13500011188,字段之间无顺序要求。步骤220此函数根据传进的表名到配置文件中找到相应的表结构,得到所有字段名及其默认值。例1中,通过表名User_info到配置文件中找到150个字段名及其默认值。步骤230通过参数传递的字段名与从配置文件中得到的字段名比对,检查是否正确,如果不正确则跳出此函数,如果正确则进入步骤240。此步骤意在对数据库操作前就检查出用户是否输入有误,如果没有此步,则必须等到步骤260时才能发现错误,而此时已经执行了向数据库插入数据的过程。例1中,将字段名Username和Account与150个字段名比对,如果在150个字段名中能够找到Username和Account,则进入步骤240;如果Username和Account中至少有一个是错误的,则结束此函数。步骤240通过将用户输入信息与配置文件中的信息组合,形成新列表。一种较佳的方式是通过参数传递的字段名在从该数据库表配置文件中找到相应的位置,用参数传递的值代替原表结构中的默认值,构成新列表。例1中,在字段名Username处用John代替默认值A,在字段名Account处用13500011188代替默认值0,新列表为User_info(Userid=001Username=JohnAccount=13500011188Useradd=0……注共150个字段)步骤250将新列表信息传给INSERT命令。步骤260执行该插入命令向数据库中增加数据记录。如果插入失败可以返回到开始,重新插入表记录。结束时返回结果,插入成功返回结果为0,错误返回1。此时脚本命令只包括参数传进的数据,不包括配置文件中的数据。例1中,脚本命令为AddTableRecorderrinfouser_info“Username=‘John’”“Account=‘13500011188’”。为了检查用户在数据库中插入的表记录是否正确,对数据库进行检查操作时,用户仅提供关心的数字库字段及对应的预期值,系统自动调用查询语句从数据库表中查找相应的表记录,如果用户需要查找完整的表记录,系统自动从配置文件中读取其余字段及默认值提供给查询语句,将查找到的数据库表记录与预期值进行比对,完成检查表记录的操作。相应的,本实施例通过定义接口函数来实现检查数据库表记录的操作。函数首先读入用户输入信息,然后通过配置文件读入数据库表的字段名,检查用户输入字段名是否正确。利用用户输入的字段名,通过SELECT语句到数据库中查找到数据,这些数据与用户输入的预期值比对,完成检查过程。在本实施例中函数名为CheckTableValue,包括参数errinfo、ischeckall、tablename、filterstr及args,其中errinfo为错误信息返回参数,用于脚本命令,ischeckall用于判断是否按默认值检查表中所有字段值,tablename表示表名,filterstr为SQL语句中where条件参数,用于过滤检查信息,args是可变参数,欲检查的数据库表记录的字段名及其预期值列表,当需要检查多条记录时每个字段的预期值使用“|”分隔。参见图3,本实施例中可以实现表记录检查的装置包括接收装置301、查找装置302、检错装置303、命令装置304、执行装置305、比对装置306以及存储装置307。存储装置307,用于存储配置文件等,所述配置文件中包含有数据库表的所有字段及对应的默认值,此装置可以是软盘、硬盘、磁带等存储设备。接收装置301,用于从操作命令中获取输入的数据库表标识,字段名和对应的预期值,以及查询条件。该预期值为用户认为数据库表中应当存储的值。查找装置302,用于根据从所述操作命令中获取的数据库表标识从所述存储装置307中调用相应的配置文件,从配置文件中获取所述操作命令中未指定的其它需要查询的字段及默认值,并将字段传送给命令装置304,将字段的默认值作为预期值。检错装置303,用于进一步判断配置文件的字段中是否包含操作命令中的所有字段,若是,则启动命令装置304,否则结束装置运行。命令装置304,用于根据需要查询的字段生成查询命令。执行装置305,用于执行命令装置304中生成的查询命令,在所述数据库的数据表中查找所需的表记录以获得操作命令指定字段的对应值,将表字段的对应值送入比对装置306。比对装置306,用于将从所述执行装置305中获得的字段的值与从操作命令中获取的对应的预期值进行比较,完成对数据库表记录的检查。下面结合例2对本实施例中检查数据库表记录进行详细描述例2,函数名为CheckTableValue。用户希望从数据库表User_info中查询字段名为Accountid值为20050223的记录,检查字段Username的值是否为John,字段Account的值是否为13500011188或13511111188,此表包含150个字段,其它字段值不关心。将取到的记录放入临时表tmpdbretrunlist中,从tmpdbretrunlist中分离出Username和Account的值放入变量curname和curcount中,利用上述两个变量与预期值进行比对,实现对表记录的检查。此表配置文件内容为User_info(Userid=001Username=AAccount=0Useradd=0……注共150个字段)参见图4,本实施例中检查数据库表记录的流程如下步骤410提供数据库表名、需要检查的字段名及预期值,执行调用检查数据库表记录的接口函数的操作命令。例2中将表名User_info代替参数tablename,将检查数据Username、John、Account、13500011188、13511111188相应地代替args,形式为Username=John,Account=13500011188|13511111188,字段之间无顺序要求。步骤420函数根据传进的表名到配置文件中找到相应的表结构,得到所有字段的名称。例2中,通过表名User_info到配置文件中找到150个字段名。步骤430通过参数传递的字段名与从配置文件中得到的字段名比对,检查是否正确,如果不正确则跳出此函数,如果正确则进入步骤440。此步骤意在对数据库操作前就检查出用户是否输入有误,如果没有此步,则必须等到步骤480时才能发现错误,而此时已经执行了向数据库查询数据的过程。例2中,将字段名Username、Account和Accountid与150个字段名比对,如果在150个字段名中能够找到Username、Account和Accountid,则进入步骤440;如果Username、Account和Accountid中至少有一个是错误的,则结束此函数。步骤440通过赋值给参数ischeckall判断是否要检查数据库表中的所有字段,如果要检查所有字段,则进入步骤441。如果不需要检查其它字段,则进入步骤450。参数ischeckall值为0则不需要判断,为1则需要判断。例2中,用户只关心两个字段,其余不关注,则为参数ischeckall赋值为0,跳过步骤441,直接进行步骤450。步骤441通过将用户输入信息与配置文件中的信息组合,形成新列表。本实施例提供一种较佳的方案为通过参数传递的字段名在从配置文件中得到的表结构中找到相应的位置,用参数传递的预期值代替原表结构中的默认值,表中其它字段的默认值作为预期值,构成新列表。例2中,在字段名Username处用John代替默认值A,在字段名Account处用13500011188和13511111188代替默认值0,新列表为User_info(Userid=001Username=JohnAccount=13500011188|13511111188Useradd=0……注共150个字段)步骤450将用户输入的表名和字段名传给SELECT语句,必要时可从步骤441中的配置文件中获取字段名。例2中,参数filterstr由Accountid=20050223代替,SELECT语句为settmpdbretrunlist[DBSqlSCUDB“selectUsername,AccountfromUser_infowhereAccountid=20050223”]步骤460执行命令从数据库中得到用户欲检查的数据库表记录。步骤470通过命令从数据库得到的记录与预期值进行比对,此预期值可以为用户输入的预期值或包含了配置文件中的默认值。例2中,将Username和Account的值从tmpdbretrunlist中分离出来,放入变量curname和curcount中,命令为separate_list$tmpdbretrunlist0curnamecurcount;得到的表记录值与预期值进行比对。步骤480检查记录与预期值是否一致。如果一致则函数结束,如果不一致则进行步骤490。出错情况有两种,一是记录与用户输入的预期值不一致;二是当希望检查所有字段时,由于其它字段预期值用默认值代替,而记录中的一个字段值或几个字段值为非默认值,造成结果出错,事实上用户输入的预期值与记录值是一致的。这两种情况在步骤490中处理。步骤490生成错误信息,函数结束。结束时返回结果,如果检查记录全部正确返回0,存在错误返回1。此时脚本命令只包括参数传进的数据,不包括配置文件中的数据,过滤信息由参数filterstr控制。例2中,脚本命令为CheckTableValueerrinfoYESuser_info“Username=’John’”“Account=13500011188”。上述函数名及其参数可根据实际情况自行定义,本实施例中函数名及参数名和值仅为举例之用。由于采用按数据库表结构生成的配置文件,保证了表结构的顺序性和一致性。通过为数据库表记录的构造和检查提供了统一的接口函数,封装了SQL语句,数据库操作命令由函数自动完成,减少了用户的输入量和对数据库的直接操作,提高了系统的安全性,同时简化了脚本命令,增强脚本的可读性和重用能力,易于维护,节省成本。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。权利要求1.一种数据库表的表记录构造方法,其特征在于,A、从操作命令中获取需要操作的数据库表标识,需要由用户赋值的字段名及其指定值;B、根据所述数据库表标识调用对应的配置文件,该配置文件中包含所述数据库表的所有字段及对应的默认值;C、从所述配置文件中获取操作命令中未指定的字段及对应的默认值,并将其与操作命令中指定的字段及对应值按数据库表中字段顺序生成插入语句;D、执行所述插入语句在数据库表中生成记录。2.如权利要求1所述的数据库表记录构造方法,其特征在于,所述操作命令可以为当前执行程序中包含的命令,也可以为用户输入命令。3.如权利要求1所述的数据库表记录构造方法,其特征在于,在配置文件中,按照对应的数据库表字段的结构顺序依次排列字段。4.如权利要求1所述的数据库表记录构造方法,其特征在于,所述数据库表标识为表名。5.如权利要求1至4任一项所述的数据库表记录构造方法,其特征在于,在生成插入命令之前,进一步判断配置文件的字段中是否包含有操作命令中的所有数据库表字段,若是,则执行步骤C,否则结束处理流程。6.一种检查数据库表记录的方法,其特征在于,A、从操作命令中获取需要操作的数据库表标识,用户指定的字段名和对应的预期值;B、利用获取的数据库表字段生成查询命令;C、执行所述查询命令实现从数据库中查找表记录,并获得需要查询的字段的值;D、将从数据库表中获得的字段的值与对应的预期值进行比较,完成检查表记录的操作。表记录的操作。7.如权利要求6所述的数据库表记录检查的方法,其特征在于,所述操作命令可以为当前执行程序中包含的命令,也可以为用户输入命令。8.如权利要求6所述的数据库表记录检查的方法,其特征在于,在配置文件中,按照对应的数据库表字段的结构顺序依次排列字段。9.如权利要求6所述的数据库表记录检查的方法,其特征在于,所述数据库表标识为表名。10.如权利要求6至9任一项所述的数据库表记录检查的方法,其特征在于,在执行步骤B前进一步包括步骤A1、判断用户是否需要检查所有字段,若是,则进行步骤A2,否则,进行步骤B;A2、根据所述数据库表标识调用包含该数据库表的所有字段的配置文件,从中读取操作命令中未指定的字段及对应的默认值,并将默认值作为预期值,继续步骤B。11.如权利要求10所述的数据库表记录检查的方法,其特征在于,在生成查询命令之前,进一步判断配置文件的字段中是否包含操作命令中的所有数据库表字段,若是,则执行步骤B,否则结束处理流程。12.一种实现数据库表记录构造的装置,其特征在于,该装置包括存储装置,用于存储配置文件,所述配置文件中包含有数据库表的所有字段及对应的默认值;接收装置,用于从操作命令中获取输入的数据库表标识,字段名及其对应值,将操作命令指定信息传入查找装置;查找装置,用于根据所述数据库表标识调用存储装置中对应的配置文件;命令装置,用于从所述查找装置查到的配置文件中获取操作命令中未指定的字段及对应的默认值,并将其与操作命令中指定的字段及对应值按数据库表中字段顺序生成插入语句;执行装置,用于根据命令装置中生成的命令执行向存储装置中的数据库插入一条表记录的操作。13.如权利要求12所述的实现数据库表记录构造的装置,其特征在于,该表记录构造装置还包括检错装置,用于在生成插入命令之前,进一步判断配置文件的字段中是否包含操作命令中的所有字段,若是,则启动命令装置,否则结束装置运行。14.一种实现检查数据库表记录的装置,其特征在于,该装置包括存储装置,用于存储配置文件,所述配置文件中包含有数据库表的所有字段及对应的默认值;接收装置,用于从操作命令中获取输入的数据库表标识,字段名和对应的预期值;命令装置,用于根据需要查询的字段生成查询命令;执行装置,用于执行命令装置中生成的查询命令,在所述数据库的数据表中查找所需的表记录以获得指定字段对应的值;比对装置,用于将所述执行装置获得的字段的值与对应的预期值进行比对。15.如权利要求14所述的实现检查数据库表记录的装置,其特征在于,该装置还包括查找装置,用于根据所述数据库表标识从所述存储装置中调用相应的配置文件,当用户需要检查所有字段时,从配置文件中获取所述操作命令中未指定的其它需要查询的字段及默认值,并将字段传送给命令装置,将字段的默认值作为预期值;检错装置,用于在生成查询命令之前,进一步判断配置文件的字段中是否包含操作命令中的所有字段,若是,则启动命令装置,否则结束装置运行。全文摘要本发明公开了一种数据库表记录自动构造与检查的方法及其装置,用于解决目前对数据库的操作繁琐、易于出错的问题。该方法从操作命令中获取用户输入信息,然后调用配置文件,结合用户输入信息和配置文件形成SQL语句,完成对数据库表记录构造或检查的操作。该装置包括用于接收操作命令信息的装置、用于查找配置文件的装置、形成SQL命令的装置、执行该命令的装置和存储配置文件的装置。本发明具有错误率低,易于维护,成本较低的特点。文档编号G06F17/30GK101046812SQ20061008395公开日2007年10月3日申请日期2006年6月12日优先权日2006年6月12日发明者严家兵申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1