SQLException:无法在当前上下文中提交语句
SQLException: Cannot submit statement in current context
我在通过准备好的语句调用存储过程时遇到了这个异常,但是它适用于可调用语句。我想知道是否必须使用可调用语句来调用 voltdb 中的存储过程?
String sql = "{call get_city_by_country(?)}";
PreparedStatement stat = conn.prepareStatement(sql);
stat.setString(1, "china");
ResultSet results = stat.executeQuery();
下面抛出异常:
Exception in thread "main" java.sql.SQLException: Cannot submit statement in current context: '{call get_city_by_country(?)};'.
at org.voltdb.jdbc.SQLError.get(SQLError.java:45)
at org.voltdb.jdbc.JDBC4PreparedStatement.executeQuery(JDBC4PreparedStatement.java:121)
这个很好用。
CallableStatement proc = conn.prepareCall(sql);
proc.setString(1, "china");
ResultSet results = proc.executeQuery();
看起来您的驱动程序只支持 CallableStatement
上的 CALL
转义。所以你需要使用 CallableStatement
来代替。
第 6.4 节 Java EE JDBC Compliance JDBC 4.2 规范然而说(强调我的):
Drivers must support stored procedures. The DatabaseMetaData
method
supportsStoredProcedures
must return true
. The driver must also support
the full JDBC API escape syntax for calling stored procedures with the following methods on the Statement
, PreparedStatement
, and CallableStatement
classes:
executeUpdate
executeQuery
execute
这意味着您的驱动程序不完全符合 Java EE JDBC 合规性要求。您可能需要考虑向驱动程序供应商提交错误报告。
我在通过准备好的语句调用存储过程时遇到了这个异常,但是它适用于可调用语句。我想知道是否必须使用可调用语句来调用 voltdb 中的存储过程?
String sql = "{call get_city_by_country(?)}";
PreparedStatement stat = conn.prepareStatement(sql);
stat.setString(1, "china");
ResultSet results = stat.executeQuery();
下面抛出异常:
Exception in thread "main" java.sql.SQLException: Cannot submit statement in current context: '{call get_city_by_country(?)};'.
at org.voltdb.jdbc.SQLError.get(SQLError.java:45)
at org.voltdb.jdbc.JDBC4PreparedStatement.executeQuery(JDBC4PreparedStatement.java:121)
这个很好用。
CallableStatement proc = conn.prepareCall(sql);
proc.setString(1, "china");
ResultSet results = proc.executeQuery();
看起来您的驱动程序只支持 CallableStatement
上的 CALL
转义。所以你需要使用 CallableStatement
来代替。
第 6.4 节 Java EE JDBC Compliance JDBC 4.2 规范然而说(强调我的):
Drivers must support stored procedures. The
DatabaseMetaData
methodsupportsStoredProcedures
must returntrue
. The driver must also support the full JDBC API escape syntax for calling stored procedures with the following methods on theStatement
,PreparedStatement
, andCallableStatement
classes:
executeUpdate
executeQuery
execute
这意味着您的驱动程序不完全符合 Java EE JDBC 合规性要求。您可能需要考虑向驱动程序供应商提交错误报告。