2014-03-10 3 views
0

Я использую JCBC API для подключения к серверу mySQL для выполнения некоторых SQL-запросов (создания таблиц, удаления строк и т. Д.).«Несоответствие типа: невозможно преобразовать из int в ResultSet»

Однако, я получаю «Тип Рассогласование: Не удается конвертировать из INT в ResultSet» ошибки в следующей функции:

private static void deleteUnpopularArtists(Statement statement, int min_rank) throws SQLException { 

    String rank = Integer.toString(min_rank); 
    ResultSet resultSet = statement.executeUpdate("DELETE FROM record_artist WHERE high_chart_pos < " + rank + ";"); 

} 

Я пытался использовать String.valueOf(min_rank); и int rank = min_rank + "";

Так что мой вопрос, почему я получаю эту ошибку? Что я могу сделать, чтобы исправить это?

+1

Это [** документация ** для] (http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate (java.lang.String)), чтобы рассказать нам такие вещи, как возвращаемое значение метода. –

+1

Рассмотрите возможность использования 'PreparedStatement', прочтите [this] (http://bobby-tables.com/) – Reimeus

ответ

4

executeUpdate возвращает количество строк, затронутых в запросе. Понятие ResultSet для операции записи в базе данных не имеет смысла

int rows = statement.executeUpdate 
    ("DELETE FROM record_artist WHERE high_chart_pos < " + rank + ";"); 
0
 
1. ExecuteUpdate returns int - for update, insert and delete operations 
where the result is expected to be int (Number of rows affected) 
 
2. ExecuteQuery returns resultset - useful for query statements (eg. select * from table) 
where result type is resultset (data from the table) 
 
3. execute returns boolean - when you do not know what function to use for your 
query or for unknown dynamic sql use this function. 
It returns true if result is a resultSet and false if answer is an updateCount 
or no results founds

Надеется, что это помогает !!!

Смежные вопросы