Я столкнулся со странным поведением при выполнении запроса SELECT с использованием Statement#executeUpdate()
по ошибке. Хотя в Javadoc четко указано, что executeUpdate() throws SQLException
, если данный оператор SQL создает объект ResultSet. Но когда я выполняю SELECT * from TABLE_NAME
, я не получаю никаких исключений. Вместо этого я получаю возвращаемое значение, такое же, как и нет. выбранных строк, если нет. меньше или равно 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.
Я что-то упустил или драйверы сами определяют свое поведение?