我正在尝试用 Java 连接到 z/OS 中的 VSAM 文件。我已经尝试使用具有以下代码的 VSE 重定向器连接器:
package test;
import java.sql.DriverManager;
import java.sql.ResultSetMetaData;
public class TestVSAM {
public static void main(String[] args) {
String vsamCatalog = "VSESP.USER.CATALOG";
String flightsCluster = "USERNAME.TEST.KSDS1";
String flightsMapName = "FLIGHTS_MAP";
String ordersCluster = "FLIGHT.ORDERING.ORDERS";
String ordersMapName = "ORDERS_MAP";
String ipAddr = "XXX.XXX.XXX.XXX";
String userID = "XXXXXX";
String password = "XXXXXX";
Integer port = 123;
try {
System.out.println("VSE IP address------------->" + ipAddr);
System.out.println("Your VSE user ID----------->" + userID);
System.out.println("Password------------->" + password);
System.out.println("Port------------->" + port);
java.sql.Connection jdbcCon;
java.sql.Driver jdbcDriver =
(java.sql.Driver) Class.forName("com.ibm.vse.jdbc.VsamJdbcDriver").newInstance();
// Build the URL to use to connect
String url = "jdbc:vsam:" + ipAddr;
// Assign properties for the driver
java.util.Properties prop = new java.util.Properties();
prop.put("port", port);
prop.put("user", userID);
prop.put("password", password);
// Connect to the driver
jdbcCon = DriverManager.getConnection(url, prop);
// Get a statement
java.sql.Statement stmt = jdbcCon.createStatement();
// Execute the query ...
java.sql.ResultSet rs = stmt.executeQuery(
"SELECT * FROM " + vsamCatalog + "\\" + flightsCluster + "\\" + flightsMapName);
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
System.out.println("Key------------>" + rsmd.getColumnLabel(i));
}
rs.close();
stmt.close();
} catch (Exception e) {
System.out.println(e);
}
我收到此错误:
我的问题:
- 我们可以使用 VSE 重定向器连接器来读取 VSAM 文件吗?如果是,那么我们如何解决上述错误并建立连接?
- 有没有其他方法可以通过 Java 访问 VSAM 文件?