Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите JDBC и вывод int

Статус
Закрыто для дальнейших ответов.

Zard0nic

Старожил
Пользователь
Баллы
153
Появилась еще одна ошибка, которая уже не относится к прошлой теме.
Итак, требуется получить из БД один числовой элемент по запросу "SELECT price FROM blocks WHERE id = 1".
Библиотеки подключил. Весь код:
Код:
            PreparedStatement sampleQueryStatement = conn.prepareStatement("SELECT price FROM blocks WHERE id = 1");
            ResultSet result1 = sampleQueryStatement.executeQuery();
            int cash = result1 * col;
После данного запроса элемент result1 должен получить ответ в виде числа. Далее идет умножение этого result1 на другой элемент. Но, если попытаться поменять изначально тип result1 с ResultSet на int, то выдает ошибку.
Подскажите, как можно "преобразовать" result1 в int или сразу получить элемент этого типа?
 
Весь день сидел над этим, а оказалось так просто...
Ну и тогда еще один вопрос, касающийся БД:
Код:
"UPDATE iConomy SET balance = " + newbalance + " WHERE username = ' " + name + " ' "
Такой запрос использую, но выдает ошибку при выполнения условия: почему-то плагин считает, что переменная name - это столбец. Сама причина ошибки:
Код:
Unknown column 'Jackie' in 'where clause'
Jackie - это имя в игре, и, соответственно, в БД.
Начитавшись лит-ры про запросы, кавычки и т.д., у меня возникает вопрос: в данном случае надо ' - такую кавычку выделять как \' или нет?
 
Весь день сидел над этим, а оказалось так просто...
Ну и тогда еще один вопрос, касающийся БД:
Код:
"UPDATE iConomy SET balance = " + newbalance + " WHERE username = ' " + name + " ' "
Такой запрос использую, но выдает ошибку при выполнения условия: почему-то плагин считает, что переменная name - это столбец. Сама причина ошибки:
Код:
Unknown column 'Jackie' in 'where clause'
Jackie - это имя в игре, и, соответственно, в БД.
Начитавшись лит-ры про запросы, кавычки и т.д., у меня возникает вопрос: в данном случае надо ' - такую кавычку выделять как \' или нет?
Используй PreparedStatement.setЧтото() и не ебись с кавычками. В твоём случае
Код:
PreparedStatement ps = conn.prepareStatement("UPDATE iConomy SET balance = ? WHERE username = ?");
ps.setInt(1, newbalance);
ps.setString(2, name);
ResultSet rs = ps.executeQuery();
 
Последнее редактирование:
Используй PreparedStatement.setЧтото() и не ебись с кавычками. В твоём случае
Код:
PreparedStatement ps = conn.prepareStatement("UPDATE iConomy SET balance = ? WHERE username = ?");
ps.setInt(1, newbalance);
ps.setString(2, name);
ResultSet rs = ps.executeQuery();
Не помогает, все равно ошибка та же.
 
Мне вот интересно, сколько времени пройдет, пока он не поймет, что в таблице "iConomy " нет необходимой записи?
 
Мне вот интересно, сколько времени пройдет, пока он не поймет, что в таблице "iConomy " нет необходимой записи?
Сам gamelax :o
image.png
 
Да, Gamelax он такой... Находит Ваши глупые ошибки (внимательнее присмотритесь):
Код:
"UPDATE iConomy SET balance = " + newbalance + " WHERE username = ' " + name + " ' "

Ну и конечно, всему виной драйвер, а не собранный Вами запрос. Может наконец-то покажете его в готовом виде, каким он уходит серверу?
 
Да, Gamelax он такой... Находит Ваши глупые ошибки (внимательнее присмотритесь):
Код:
"UPDATE iConomy SET balance = " + newbalance + " WHERE username = ' " + name + " ' "

Ну и конечно, всему виной драйвер, а не собранный Вами запрос. Может наконец-то покажете его в готовом виде, каким он уходит серверу?
Ладно, примерно так:
UPDATE iConomy SET balance = 5 WHERE username = 'Jackie'.
Всматривался уже кучу раз, может я слепой?
 
UPDATE iConomy SET balance = 5 WHERE username = 'Jackie'.
Всматривался уже кучу раз, может я слепой?
Видимо так. На выходе, как минимум, будет:
UPDATE iConomy SET balance = 5 WHERE username = ' Jackie '

И зачем нам Ваше "примерно"? Покажите его в собранном виде.
 
Код:
"UPDATE `iConomy` SET balance = `" + newbalance + "` WHERE username = '" + name + "'"
Меня почему-то спасли `вот такие кавычки`
 
Код:
"UPDATE `iConomy` SET balance = `" + newbalance + "` WHERE username = '" + name + "'"
Меня почему-то спасли `вот такие кавычки`
Серьезно? Апострофами необходимо выделять название базы/таблицы/поля, а не передаваемые значения.
 
Как по мне, здесь ошибка куда более забавная - в переменной name хранится бог знает что.
P.S. Den_Abr, может пора уже строки StringBuilder'ом собирать?
 
Как по мне, здесь ошибка куда более забавная. Либо в переменной name хранится бог знает что, либо не с той базой работает.
P.S. Den_Abr, может пора уже строки StringBuilder'ом собирать?
eb4e330f.png

Мне норм
%D0%9A%D0%B0%D0%BD%D0%BE%D0%BF%D0%BB%D1%8F%D1%88%D0%BA%D0%B0_thumb.jpg

СтрингБилдер не для таких как я:confused:
 
Попытался вывести в лог сервера собранный запрос, а он его просто пропустил. Выводил через getLogger.
В name хранится имя игрока. Иначе как могло появиться это: "Unknown column 'Jackie' in 'where clause'".
Работаю точно с той базой, потому что уже селектом выводил из базы нужные строки.
Ап
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх