Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Zard0nic, 13 окт 2013.

Статус темы:
Закрыта.
  1. Автор темы
    Zard0nic

    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 или сразу получить элемент этого типа?
     
  2. Хостинг MineCraft
    <
  3. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Zard0nic нравится это.
  4. Автор темы
    Zard0nic

    Zard0nic Старожил Пользователь

    Баллы:
    153
    Весь день сидел над этим, а оказалось так просто...
    Ну и тогда еще один вопрос, касающийся БД:
    Код:
    "UPDATE iConomy SET balance = " + newbalance + " WHERE username = ' " + name + " ' "
    Такой запрос использую, но выдает ошибку при выполнения условия: почему-то плагин считает, что переменная name - это столбец. Сама причина ошибки:
    Код:
    Unknown column 'Jackie' in 'where clause'
    Jackie - это имя в игре, и, соответственно, в БД.[DOUBLEPOST=1381670494,1381668055][/DOUBLEPOST]Начитавшись лит-ры про запросы, кавычки и т.д., у меня возникает вопрос: в данном случае надо ' - такую кавычку выделять как \' или нет?
     
  5. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Используй PreparedStatement.setЧтото() и не ебись с кавычками. В твоём случае
    Код:
    PreparedStatement ps = conn.prepareStatement("UPDATE iConomy SET balance = ? WHERE username = ?");
    ps.setInt(1, newbalance);
    ps.setString(2, name);
    ResultSet rs = ps.executeQuery();
     
    Последнее редактирование: 13 окт 2013
  6. Автор темы
    Zard0nic

    Zard0nic Старожил Пользователь

    Баллы:
    153
    Не помогает, все равно ошибка та же.
     
  7. gamelax

    gamelax Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    Мне вот интересно, сколько времени пройдет, пока он не поймет, что в таблице "iConomy " нет необходимой записи?
     
  8. Автор темы
    Zard0nic

    Zard0nic Старожил Пользователь

    Баллы:
    153
    Сам gamelax :eek:
    [​IMG]
     
  9. gamelax

    gamelax Старожил Пользователь

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

    Zard0nic Старожил Пользователь

    Баллы:
    153
    Ладно, примерно так:
    UPDATE iConomy SET balance = 5 WHERE username = 'Jackie'.
    Всматривался уже кучу раз, может я слепой?
     
  11. gamelax

    gamelax Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    Видимо так. На выходе, как минимум, будет:
    UPDATE iConomy SET balance = 5 WHERE username = ' Jackie '

    И зачем нам Ваше "примерно"? Покажите его в собранном виде.
     
  12. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Код:
    "UPDATE `iConomy` SET balance = `" + newbalance + "` WHERE username = '" + name + "'"
    Меня почему-то спасли `вот такие кавычки`
     
  13. gamelax

    gamelax Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    Серьезно? Апострофами необходимо выделять название базы/таблицы/поля, а не передаваемые значения.
     
  14. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Во, точно
    UPDATE `iConomy` SET `balance` = " + newbalance + " WHERE `username` = '" + name + "'
     
  15. gamelax

    gamelax Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    Как по мне, здесь ошибка куда более забавная - в переменной name хранится бог знает что.
    P.S. Den_Abr, может пора уже строки StringBuilder'ом собирать?
     
  16. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    [​IMG]
    Мне норм[​IMG]
    СтрингБилдер не для таких как я:confused:
     
  17. Автор темы
    Zard0nic

    Zard0nic Старожил Пользователь

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

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