[英]JDBC MySQL stored procedure throw exception “ Parameter number 2 is not an OUT parameter”?
我有以下代码片段:
final String adatbazisURL = "jdbc:mysql://localhost:3306";
Connection kapcsolat = null;
Statement utasitas = null;
try {
Class.forName("com.mysql.jdbc.Driver");
kapcsolat = DriverManager.getConnection(adatbazisURL, felhNev,
jelszo);
utasitas = kapcsolat.createStatement();
String sql = "USE"+Azonositok.getAdatbazisNev()+";";
utasitas.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
String sql = "DROP PROCEDURE IF EXISTS proba ;";
utasitas.executeUpdate(sql);
sql = "CREATE PROCEDURE proba (" + "IN number1 INTEGER, "
+ "OUT number2 INTEGER) " + "BEGIN " +
"SET number2 = number1;" + "END";
utasitas.execute(sql);
CallableStatement callableStatement = null;
String callString = "{CALL proba(?,?)}";
callableStatement = kapcsolat.prepareCall(callString);
callableStatement.setInt(1, 5);
callableStatement.registerOutParameter(2, java.sql.Types.INTEGER);
callableStatement.execute();
int number = callableStatement.getInt(2);
callableStatement.close();
当我运行此代码时,它引发“参数编号2不是OUT参数”异常。 为什么?
问题是这样的:
String sql = "USE"+Azonositok.getAdatbazisNev()+";";
utasitas.executeUpdate(sql);
执行上下文似乎并未为所有语句设置。 无需运行SQL来更改架构,而是将其直接附加到JDBC URL:
final String adatbazisURL =
"jdbc:mysql://localhost:3306/" +
Azonositok.getAdatbazisNev().trim();
或者,您可以在执行过程之前将模式添加到过程名称之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.