2013-07-11 5 views
0

Я пишу очень простой запрос. Но я не могу найти ошибку. Вот код:Почему этот запрос не работает?

con = DBConnect.connect(); 

try { 
    PreparedStatement query = (PreparedStatement) con.prepareStatement("SELECT * FROM accounts where iban=?"); 
    query.setString(1, iban); 

    ResultSet result = (ResultSet) query.executeQuery(); 
    double oldBalance; 
    } catch (SQLException e) { 
     System.out.println(e); 
    } 

Я уверен, что имя таблицы счета, и существует столбец типа VARCHAR называется IBAN. Я отлаживался и поэтому уверен, что query.setString(1, iban); наборы строк iban правильно.

Но когда дело доходит до линии ResultSet result = (ResultSet) query.executeQuery();, она неожиданно переходит к последней строке, которая состоит из "}". Он даже не входит в блок catch, поэтому я не вижу проблемы.

Что здесь не так, может кто-нибудь мне рассказать?

Благодаря

Edit: Похоже, запрос выполняется успешно. Теперь после того, как ExecuteQuery линии я просто сделать:

double oldBalance=result.getDouble("iban"); 

И это дает мне ошибку:

java.sql.SQLException: Before start of result set 

Может кто-нибудь сказать мне здесь проблемы?

+0

Во-первых, вам не нужно бросать объект в тот же тип, что и метод, возвращаемый методом. Ваши приемы 'ResultSet' и' PreparedStatement' являются избыточными. Во-вторых, вы выбрали DB по умолчанию в своем соединении. Вы всегда должны быть явными и 'SELECT * FROM schema.table' вместо того, чтобы полагаться на схему, указанную в соединении (которая работает только для MySQL в любом случае - если она не находится в общедоступной схеме) –

+0

Очистите и перестройте свой проект. Затем запустите его снова. –

+4

Ваша переменная 'oldBalance' не назначена. После 'executeQuery'line он перейдет к последней строке, поскольку ничего не нужно делать в блоке' try'. –

ответ

1

Когда вы отлаживаете свой код, как только вы находитесь на линии ResultSet result = (ResultSet) query.executeQuery();, так как ничего больше после того, как это будет сделано в блоке try, если вы перейдете к следующему шагу, он перейдет в конец блока ,

Таким образом, ваш запрос может действительно работать нормально, вам просто нужно что-то сделать с ним в блоке, так как вашназначен в блоке.

Редактировать: Проверьте это answer для вашей другой проблемы.

+0

Спасибо, что сводило меня с ума. Но есть еще одна мелочь, если бы вы снова посмотрели на отредактированный вопрос? – yrazlik

+0

@iceface Вместо этого вы должны задать другой вопрос, но я добавил ссылку, чтобы ответить на ваши изменения. Если все ответит на ваши вопросы, не забудьте принять ответ. –

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