一种通用数据库访问中自动适配对象的方法_3

文档序号:9200399阅读:来源:国知局
的值;
[0076] 步骤说明:此步骤为2-4的逆向过程,通过编码后的用户ID、表或视图ID和字段 ID获取到对应的数据字典,根据图2还原编程语言数据结构S,根据泛化的数据访问请求中 "类型-长度-值"还原S的对象的值。
[0077] 步骤2-6,将还原后的编程语言数据对象的数据成员与数据库表的字段自动适 配;
[0078] 步骤说明:根据图2中数据库表S的字段Si与编程语言数据结构T的成员T i之间 的对应关系得到数据库表T的字段值。
[0079] 步骤2-7,构造数据库方法访问数据库。
[0080] 步骤说明:根据从泛化后的数据库访问请求中解析出的数据库用户名、表或视图 名、操作类型(插入、查询、删除和修改)、表T的字段操作类型(如输入字段、输出字段、条 件字段、条件兼输入字段、条件兼输出字段等)等信息,以及2-6中获取的数据库表T字段 Ti的值,从而构造 SQL语句访问数据库。
[0081] 小结:步骤2-1~步骤2-4为数据库访问请求泛化过程,可以实现一个未知编程语 言结构的数据块,根据数据块的长度、数据库用户名和表或视图名等构造统一的数据库访 问请求;步骤2-5~步骤2-7为泛化后的统一的数据库访问请求的处理过程,实现根据数据 字典解码泛化后的数据库访问请求,并据此构造数据库访问的SQL语句。通过步骤2-1~ 2-7实现了通过编程语言数据对象对数据库的访问,通过这种方法设计的数据库访问接口 可以实现无 SQL语句的数据库访问。
[0082] 实施例3
[0083] 图5展示了数据库查询结果自动适配对象的流程图,当数据库访问请求为查询操 作时,数据库查询结果自动适配对象为数据库访问请求自动适配对象的后续过程,即图5 为图4的延续,假设访问的数据库表为表T (视图的操作与表相同,此处不再赘述),与表T 对应的编程语言数据结构为S。具体说明如下:
[0084] 步骤3-1,查询数据字典;
[0085] 步骤说明:根据当前查询的数据库用户名和表名查询系统加载的数据字典(数据 字典由"实施例1"生成)。
[0086] 步骤3-2,获取到数据字典;
[0087] 步骤说明:根据指定的用户名、表名(即表T)从系统加载的数据字典中获取到表 T的表数据字典和表T所有下属字段的字段数据字典。
[0088] 步骤3-3,根据数据字典获取查询结果输出对象的数据结构;
[0089] 步骤说明:通过查询到的表T的数据字典和表T下属的字段数据字典(如图1格 式)可以获知表T与编程语言数据结构S的对应关系(如图2所示)和编程语言数据结构 每个成员的类型和成员长度(如图3所示),S即为表T查询结果输出对象的编程语言数据 结构。
[0090] 步骤3-4,逐个查询数据库的字段值;
[0091] 步骤说明:通过数据库提供的原生访问接口及数据库方法逐条提取本次查询的结 果,逐个获取每条查询结果中的查询字段值。
[0092] 步骤3-5,根据建立的数据库表或视图的字段与编程语言数据结构成员的对象化 关系自动适配。
[0093] 步骤说明:根据图2中表T的字段Ti与编程语言数据结构S的成员S i的对应关系 确定Si的值,根据图3中描述的编程语言数据结构S的内存存储情况按字节向"输出内存 块"中写S的成员Si的值,将查询结果转化为编程语言数据对象,从而实现数据库查询结果 自动适配对象。
[0094] 小结:步骤3-1~步骤3-5实现了将数据库查询结果转化为编程语言数据结构的 格式,可以通过编程语言数据对象的形式直接访问。
[0095] 本发明提供了一种通用数据库访问中自动适配对象的方法,具体实现该技术方案 的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普 通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和 润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实 现。
【主权项】
1. 一种通用数据库访问中自动适配对象的方法,其特征在于,包括数据库表与编程语 言数据结构的对象化、数据库访问请求自动适配对象和数据库查询结果自动适配对象。2. 根据权利要求1所述的一种通用数据库访问中自动适配对象的方法,其特征在于, 数据库表与编程语言数据结构的对象化采用数据字典技术对编程语言的数据结构进行定 义,数据字典分为用户数据字典、表或视图数据字典,以及字段数据字典三类,三类数据字 典生成后以文件的形式存储,数据字典文件分为两部分:文件头和数据字典内容,三类数据 字典的文件头的格式相同,数据字典文件头包括文件名、文件长度、记录个数、单个记录的 长度,校验码和记录起始位置的偏移量,三类数据字典文件内容包括: (a) 用户数据字典:包括用户名、用户ID和用户下的表或视图数目; (b) 表或视图数据字典:包括表名或视图名、用户的ID、表ID或视图ID、表或视图的字 段数目、表的主键字段数目和表的主键字段的索引; (c) 字段数据字典:包括字段名、用户ID、表或视图ID、字段ID、字段类型和字段长度; 其中,数据字典中的字段类型是与数据库字段类型对应的编程语言中的类型,数据库 字段类型中的整数对应编程语言的整数、浮点数对应编程语言的浮点数、字符串对应编程 语言的字符数组、时间对应编程语言的时间结构体、二进制大字段对应编程语言的由一个 长度字段和一个指针组成的结构体,字段数据字典中的字段长度为编程语言中的数据类型 长度; 当数据库结构变化时,通过更新数据字典和编程语言的数据结构实现数据库与编程语 言数据结构的重新适配。3. 根据权利要求2所述的一种通用数据库访问中自动适配对象的方法,其特征在于, 所述数据库表与编程语言数据结构的对象化包括如下步骤: 步骤1-1,根据数据库的数据目录提取数据库的用户数据字典; 步骤1-2,根据数据库的数据目录提取数据库的表或视图数据字典,并将其与用户数据 字典关联; 步骤1-3,根据数据库的数据目录提取数据库的字段数据字典,并将其与表或视图数据 字典关联; 步骤1-4,根据数据库的表或视图数据字典和字段数据字典,以及数据库字段类型与编 程语言数据类型的对应关系,生成与数据库对象对应的编程语言数据结构,根据生成的编 程语言数据结构构造编程语言数据对象。4. 根据权利要求3所述的一种通用数据库访问中自动适配对象的方法,其特征在于, 所述编程语言的数据结构定义与数据库字段定义顺序相同,且设置字节对齐方式为单字节 对齐,并将编程语言数据对象根据数据字典编码成统一的数据库访问请求。5. 根据权利要求4所述的一种通用数据库访问中自动适配对象的方法,其特征在于, 所述数据库访问请求自动适配对象包括如下步骤: 步骤2-1,根据编程语言数据对象构建数据库访问请求; 步骤2-2,根据数据库访问请求中的数据库用户名、表名或视图名查询数据字典; 步骤2-3,获取到指定用户、指定表或视图以及表或视图所有字段的数据字典; 步骤2-4,根据数据字典编码编程语言数据对象,使数据库访问请求泛化; 步骤2-5,使用统一接口处理泛化后的数据库访问请求,根据数据字典将编程语言数据 对象还原,获取到编程语言数据对象每个成员的值; 步骤2-6,将还原后的编程语言数据对象的数据成员与数据库表的字段适配; 步骤2-7,构造数据库方法访问数据库。6.根据权利要求5所述的一种通用数据库访问中自动适配对象的方法,其特征在于, 所述数据库查询结果自动适配对象包括如下步骤: 步骤3-1,查询数据字典; 步骤3-2,获取到数据字典; 步骤3-3,根据数据字典获取查询结果输出对象的数据结构; 步骤3-4,逐个查询数据库的字段值; 步骤3-5,根据建立的数据库表或视图的字段与编程语言数据结构成员的对象化关系 自动适配。
【专利摘要】本发明提供了一种通用数据库访问中自动适配对象的方法,包括通过数据库数据目录自动生成数据字典和编程语言数据结构;通过数据字典技术实现数据库表与编程语言应用对象的自动适配;通过这种方法实现的数据库访问接口可以向用户提供无SQL语句的数据库访问,实现了数据库表与编程语言数据结构的对象化、数据库访问请求自动适配对象和数据库查询结果自动适配对象,这种对象化在数据库与应用对象之间建立“动态耦合”关系,当数据库设计变化后可以通过自动化的方法以重新生成数据字典和编程语言数据结构的方式对其进行重新对象化,解决了数据库应用程序对具体数据库结构依赖性过大、软件的可扩充性差和通用性不高等问题。
【IPC分类】G06F17/30
【公开号】CN104915383
【申请号】CN201510258143
【发明人】雷明涛, 田少鹏, 何赟, 薛松, 郭灵波, 印小冬, 李怡谦
【申请人】中国电子科技集团公司第二十八研究所
【公开日】2015年9月16日
【申请日】2015年5月19日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1