Я столкнулся с странным поведением при выполнении запроса SELECT с использованием Statement#executeUpdate()
по ошибке. Хотя Javadoc четко заявляет, что executeUpdate() throws SQLException
, если данный оператор SQL создает объект ResultSet. Но когда я выполняю SELECT * from TABLE_NAME
, я не получаю никакого исключения. Вместо этого я получаю возвращаемое значение, которое аналогично значению no. выбранных строк, если нет. меньше или равно 10. Если нет. более 10, возвращаемое значение всегда равно 10.
Connection conn;
Statement stmt;
try {
conn = getConnection();
stmt = conn.createStatement();
int count = stmt.executeUpdate("SELECT * from TABLE_NAME");
log.info("row count: " + count);
} catch (SQLException e) {
log.error(e);
// handle exception
} finally {
DbUtils.closeQuietly(stmt);
DbUtils.closeQuietly(conn);
}
Я использую Oracle 10g.
Я что-то упустил или это зависит от драйверов, чтобы определить их собственное поведение?