通过java连接MySQL RDBMS

Posted

技术标签:

【中文标题】通过java连接MySQL RDBMS【英文标题】:Connecting to MySQL RDBMS through java 【发布时间】:2014-09-25 09:13:49 【问题描述】:

我需要使用 java 将 z/OS 上现有的 cobol 应用程序连接到远程 mysql 数据库。 我阅读了存储过程方法,但没有清楚地了解架构。 您能否分享您对 cobol-java-MySQL 存储过程连接方法的想法?

【问题讨论】:

How do we develop an application on the mainframe to access DB2/LUW without DB2/z?的可能重复 【参考方案1】:

Oracle 至少通过其“透明网关 (TG)”功能提供 DRDA 支持。

http://www.oracle.com/technetwork/database/enterprise-edition/tg4drda-097332.html

成本很高,我看时是 5 位数。

在 IBM i(又名 AS/400)上,Oracle 提供了客户端和服务器支持。 TG 使 IBM i 看起来像另一个 oracle DB,并使 oracle DB 看起来像另一个 IBM i。 MS SQL Server 提供 DRDA 客户端支持,但不提供服务器。所以 MS SQL Server 可以愉快地连接到 DRDA 服务器,但是 DRDA 服务器无法连接到 MS SQL Server。

您为使用开放标准而付出的代价,而您的竞争对手却不这样做。

IBM 的解决方案是安装一个 DB2 LUW“Federation Server”。它基本上会将 DRDA 转换为 ODBC/OLEDB..

最后一个选项是在您的 z.js 上安装和使用类型 4 JDBC 驱动程序。我假设有一些方法可以在 z/OS 上从 COBOL 调用 java 程序。我知道 IBM i 上有。

实际上,由于 DRDA 规范是开放的,您可以想象创建自己的 DRDA Application Requester (AR),它使用 JDBC 与远程服务器通信;给你一个 DRDA 网关(桥)。事实上,IBM i 的一个开源项目就是这样做的。 ARDGATE 作为 AppServer4rpg 项目的一部分分发http://sourceforge.net/projects/appserver4rpg/?source=navbar

ARDGATE 组件是用 Java 编写的,似乎可以移植到 z/OS。

【讨论】:

【参考方案2】:

... 另一种可能性是将您的 cobol 应用程序移植到 as400(这在源代码级别应该不会太难)并使用 ArdGate 访问您想要的任何 JDBC 数据库,ArdGate 是从 DB2/400 到任何 JDBC 的通用桥强大的数据库。

节食

【讨论】:

【参考方案3】:

您拥有 Java,这意味着您可以使用 JDBC 驱动程序与 MySQL 通信。

你有 Cobol,它现在与大型机上的 Java 集成得很好。您可以编写一个 Cobol 对象,该对象将调用 JDBC 驱动程序中的各种方法。

您可以将其包装在一个过程(或一组过程)Cobol 程序中,以触发存储过程或准备好的查询并返回结果。

因此,可能的软件堆栈可能如下所示:

Existing Application (Cobol)
Procedureal Interface Module (Cobol)
Cobol-To-Java interace (OO-Cobol)
JDBC Driver for MySql (prepackaged JAR, Java)
MySQL database

【讨论】:

【参考方案4】:

ArdGate 不使用 DRDA,它使用 SQL 客户端集成出口 (AKA ARDPGM),它仅适用于 AS400。所以它不能移植到 z 系列。

应该可以编写从 DRDA 到 JDBC 的桥(这将在所有 DB2 风格上运行),但是 DRDA 规范没有很好的文档记录(这就是我使用 ArdPGM 方法的原因)。

IBM 产品再次重命名为 InfoSphere Federation Server,需要额外的服务器,而且相当昂贵(它是 IBM)。使用它,您可以使用 COBOL 中的嵌入式 SQL 访问 MS SQL Server,就像 DB2 表一样。

存储过程方法可以如下工作:

要获得结果集(打开游标),您需要将 SQL 选择语句传递给存储过程(用 Java 实现),并且在存储过程中,您必须在存储过程中处理 MSSQL 数据库以获取 ResultSet,将其拉入数组(或临时表)中,传回打开的游标。这对于 z-OS 可能非常笨拙,我不知道它是否能很好地扩展。在 AS400 上不会。

【讨论】:

以上是关于通过java连接MySQL RDBMS的主要内容,如果未能解决你的问题,请参考以下文章

mysq解决sleep进程过多的办法

Java连接MySQ据库 | 一文教会使用JDBC

EF 连接 mysq l数据库 code first模式 的实践

Java JDBC连接mysql数据库

java如何连接mysq之源码l讲解

Java进阶(二十五)Java连接mysql数据库(底层实现)