Я пишу очень простой запрос. Но я не могу найти ошибку. Вот код:Почему этот запрос не работает?
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
Может кто-нибудь сказать мне здесь проблемы?
Во-первых, вам не нужно бросать объект в тот же тип, что и метод, возвращаемый методом. Ваши приемы 'ResultSet' и' PreparedStatement' являются избыточными. Во-вторых, вы выбрали DB по умолчанию в своем соединении. Вы всегда должны быть явными и 'SELECT * FROM schema.table' вместо того, чтобы полагаться на схему, указанную в соединении (которая работает только для MySQL в любом случае - если она не находится в общедоступной схеме) –
Очистите и перестройте свой проект. Затем запустите его снова. –
Ваша переменная 'oldBalance' не назначена. После 'executeQuery'line он перейдет к последней строке, поскольку ничего не нужно делать в блоке' try'. –