热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

利用IBMJavaToolboxfori实现针对数据库文件的记录级访问

从文件系统的角度,IBMi提供了对POSIX类文件系统IFS(或集成文件系统)的强大支持。从数据库的角度,IBMi内置有关系数据库DB2。作为IBMi平台应用普遍的数据库文件,则是以文件的视图访问数据库。

从文件系统的角度,IBM i 提供了对 POSIX 类文件系统 IFS(或集成文件系统)的强大支持。从数据库的角度,IBM i 内置有关系数据库 DB2。作为 IBM i 平台应用普遍的数据库文件,则是以文件的视图访问数据库。

对于从事 IBM i 平台的应用开发而言,如何使用 IBM Java Toolbox for i 访问文件是非常重要的技能。本文的目标是系统性介绍如何利用 IBM Java Toolbox for i 实现针对数据库文件的记录级访问(RLA 或 Record Level Access),并指出 JDBC 与 RLA 两种技术的区别。

从文件系统的角度,IBM i 提供了对 POSIX 类文件系统 IFS(或集成文件系统)的强大支持。从数据库的角度,IBM i 内置有关系数据库 DB2。作为 IBM i 平台应用普遍的数据库文件,则是以文件的视图访问数据库。对于从事 IBM i 平台的数据库应用开发而言,如何使用 IBM Java Toolbox for i 访问数据库文件是非常重要的技能。本文的目标是系统性介绍如何利用 IBM Java Toolbox for i 实现针对数据库文件的记录级访问(RLA 或 Record Level Access),并指出 JDBC 与 RLA 两种技术的区别。

从文章结构上,本文首先介绍 IBM i 数据库文件的基础知识。接下来,以客户信息数据库为例,指导读者如何使用 IBM Java Toolbox for i 创建数据库文件,然后添加、检索、更新与删除客户记录。另外,关于 IBM Java Toolbox for i 对数据库锁,游标,事务的相关支持,本文也所涉及。

IBM i 数据库文件

我们从文件系统与数据库这两个维度分别介绍 IBM i 数据库文件的基本概念。

IFS 文件 vs 数据库文件

首先,从文件的角度,IBM i 提供两种文件资源形式:IFS 文件与数据库文件。所谓 IFS(或 Integrated File System)指的是一种 POSIX 类文件系统,文件存在形式是一个字节序列,没有任何数据格式。IFS 的访问方式分为顺序与随机两种。而数据库文件具有指定的数据格式。我们称数据库文件的访问方式为记录级访问。有关 IFS 文件与数据库文件的区别,见图 1。

图 1. IFS 文件 vs 数据库文件
图 1 IFS 文件 vs 数据库文件

DB2 vs 数据库文件

接下来,我们从数据库的角度对比数据库文件与数据库表。表 1 描述了 IBM i 系统对象和 DB2 对象的对应关系。结合清单 1,我们可以简单地认为,IBM i 数据库文件有若干数据记录组成,这些数据记录以文件成员(Member)的形式呈现,每一个成员提供访问数据记录的路径。而每一条记录由各个字段组成,其对应关系为:行(Row) – 记录(Record), 列(Column) – 字段(Field)。从这个角度而言,数据库表的记录格式与物理文件的记录格式完全相同。

表 1 IBM i 系统对象和 DB2 对象的对应关系

DB2 对象 IBM i 对象
模式(Schema) 库(Library)
表(Table) 数据库文件(Database Files)

JDBC 访问 vs 基于 RLA 访问

对于数据库的操作,无论从关系型数据库表的角度,还是 IBM i 数据库文件的角度,IBM Java Toolbox for i 均提供了 OO 编程级别的支持。

JDBC 是一种以 SQL 语句为核心的标准编程接口。IBM Java Toolbox for i 提供了标准的 JDBC 数据库编程实现。RLA(Record Level Access)则是一种以 SQL API 为核心的数据库文件访问技术。换句话说,不同于 IBM Java Toolbox for i 与数据库主机基于 Socket 的请求 / 相应式交互模式,RLA 直接调用 IBM i 底层的 Call Level Interface(调用级接口),属于直接调用 IBM i 本地 API 的方式,因此数据库的访问性能上要优于前者。

推荐阅读
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • 本文介绍了一种在 MySQL 客户端执行 NOW() 函数时出现时间偏差的问题,并详细描述了如何通过配置文件调整时区设置来解决该问题。演示场景中,假设当前北京时间为2023年2月17日19:31:37,而查询结果显示的时间比实际时间晚8小时。 ... [详细]
  • 本文介绍了一个SQL Server自定义函数,用于从字符串中提取仅包含数字和小数点的子串。该函数通过循环删除非数字字符来实现,并附带创建测试表、存储过程以演示其应用。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 本文介绍如何从包含多个记录的会员表中,筛选出同时拥有BookID为10和14的会员。通过SQL查询语句,可以有效地获取符合条件的MemberID。 ... [详细]
  • 在进行QT交叉编译时,可能会遇到与目标架构不匹配的宏定义问题。例如,当为ARM或MIPS架构编译时,需要确保使用正确的宏(如QT_ARCH_ARM或QT_ARCH_MIPS),而不是默认的QT_ARCH_I386。本文将详细介绍如何正确配置编译环境以避免此类错误。 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • 本文介绍 SQL Server 的基本概念和操作,涵盖系统数据库、常用数据类型、表的创建及增删改查等基础操作。通过实例帮助读者快速上手 SQL Server 数据库管理。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 福克斯新闻数据库配置失误导致1300万条敏感记录泄露
    由于数据库配置错误,福克斯新闻暴露了一个58GB的未受保护数据库,其中包含约1300万条网络内容管理记录。任何互联网用户都可以访问这些数据,引发了严重的安全风险。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文介绍如何使用SAS根据输入数据集自动生成并执行SQL查询,其中CASE语句依据另一个数据集中的观测值动态调整。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • Oracle中NULL、空字符串和空格的处理与区别
    本文探讨了在Oracle数据库中使用NULL、空字符串('')和空格('_')时可能遇到的问题及解决方案。重点解释了它们之间的区别,以及在查询和函数中的行为。 ... [详细]
author-avatar
廖盈秀怡伶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有