JDB C com.ibm.as400.access.AS400JDBCDriver CallableStatement java. sql .SQLException - PullRequest
0 голосов
/ 28 января 2020

Ниже приведен код, использующий мост JDB C ODB C для подключения к IBM iAccess, но после обновления JDK 8 поддержка моста JDB C ODB C больше не существует.

DriverManager.registerDriver((Driver) Class.forName("sun.jdbc.odbc.JDBCODBCDriver").newInstance()); Connection con = DriverManager.getConnection(jdbcURL, userName, password);

CallableStatement cs = con.prepareCall("{ call IDBMOD.SPGIFTHOLD(?,?,?,?) }");

String acctNum = doc.getElementsByTagName("account_number").item(0).getTextContent();
String amount = doc.getElementsByTagName("amount").item(0).getTextContent();
String valueDate = doc.getElementsByTagName("value_date").item(0).getTextContent(); 
String returnCode = "";

cs.setString(1, acctNum); 
cs.setString(2, amount);
cs.setString(3, valueDate); 
cs.registerOutParameter(4, Types.VARCHAR);

boolean ret = cs.execute();

Итак, мы использовали правильный драйвер JDB C jt400.jar для iBm iAccess и изменили только код подключения, но мы получаем ошибку

"java. sql .SQLException: Количество значений параметров, установленных или зарегистрированных, не соответствует количеству параметров "

Измененный код здесь.

DriverManager.registerDriver((Driver) Class.forName("com.ibm.as400.access.AS400JDBCDriver").newInstance());
Connection con = DriverManager.getConnection(jdbcURL, userName, password);

CallableStatement cs = con.prepareCall("{ call IDBMOD.SPGIFTHOLD(?,?,?,?) }");

String acctNum = doc.getElementsByTagName("account_number").item(0).getTextContent();
String amount = doc.getElementsByTagName("amount").item(0).getTextContent();
String valueDate = doc.getElementsByTagName("value_date").item(0).getTextContent();
String returnCode = "";

cs.setString(1, acctNum);
cs.setString(2, amount);
cs.setString(3, valueDate);
cs.registerOutParameter(4, Types.VARCHAR);

boolean ret = cs.execute();

Не уверен, почему мы получаем исключение java. sql .SQLException: Количество установленных или зарегистрированных значений параметров не соответствует числу параметров

...