我的代码在少量查询中运行良好。
for (int i = 0 ; i < queries.length ; i ++ ) {
PreparedStatement stmt=conn.prepareStatement(queries[i]);
if (queries[i].toUpperCase().contains("SELECT ") && !queries[i].toUpperCase().contains("CREATE ") && !queries[i].toUpperCase().contains("DROP ") && !queries[i].toUpperCase().contains("DELETE "))
{ rs=stmt.executeQuery(); }
else {stmt.executeUpdate();}
}我想我找到了第16条声明的以下错误
Exception in thread "main" java.sql.SQLException:
[Teradata][ODBC Teradata Driver] Beyond SQL_ACTIVE_STATEMENTS limit如何提高SQL_ACTIVE_STATEMENTS的限制?
我试过了
Connection conn = DriverManager.getConnection(conUrl,user,password);
conn.setHoldability(20);
conn.setClientInfo( // 发布于 2014-02-06 16:19:35
你问错问题了。您的问题不是修改SQL_ACTIVE_STATEMENTS LIMIT (顺便说一下,它看起来是一个常量,因此不能更改),而是在使用完之后关闭每个语句。
public static void main(String[] args) throws SQLException {
for (int i = 0; i < queries.length; i++) {
PreparedStatement stmt = conn.prepareStatement(queries[i]);
try {
if (queries[i].toUpperCase().contains("SELECT ") && !queries[i].toUpperCase().contains("CREATE ") && !queries[i].toUpperCase().contains("DROP ") && !queries[i].toUpperCase().contains("DELETE ")) {
rs = stmt.executeQuery();
} else {
stmt.executeUpdate();
}
} finally {
stmt.close();
}
}
}请记住,关闭语句也会关闭任何相关的ResultSet (顺便说一句,这里没有声明)。
https://stackoverflow.com/questions/21608095
复制相似问题