1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Сравнение регистра ника из Базы Данных

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

  1. Автор темы
    EwrsPlay

    EwrsPlay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Ewrs728
    Привет всем. Вот игрался с БД и нашёл такую фигню. Я записал игрока в базу данных с ником "TEST", но если зайдёт игрок под ником "test", то он зарегистрируется как новый юзер. У меня вопрос, как я могу сравнить ники учитывая регистр? То есть, если игрок "TEST" уже есть в БД, то "test" не пустит.
     
  2. alexandrage

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

    Баллы:
    173
    toLowerCase или toUpperCase.
     
  3. Автор темы
    EwrsPlay

    EwrsPlay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Ewrs728
    И как мне надо будет получить ник из БД? Мне же его надо будет получить, чтобы сравнить.
     
  4. alexandrage

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

    Баллы:
    173
    Ну или так WHERE LOWER(<key>) - WHERE UPPER(<key>) думаю тоже прокатит.
     
  5. Code

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    да, используй lower
     
  6. Автор темы
    EwrsPlay

    EwrsPlay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Ewrs728
    Я не врубаюсь, что писать в if
     
  7. Автор темы
    EwrsPlay

    EwrsPlay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Ewrs728
    Это же полностью большой/маленький регистр? А у игрока может быть TeSt
     
  8. LuckyZeeRo

    LuckyZeeRo Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    executeQuery(".... WHERE LOWER(playername) = '" + playerName.toLowerCase() + "' ...");

    Ты берешь запросом из БД превращая все ники в строчные и далее подставляя актуальный ник, тоже строчный. Оба будут test, и все заробит как говорится.
     
  9. Автор темы
    EwrsPlay

    EwrsPlay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Ewrs728
    Не врубаюсь про последнее

    Что туда надо то писать?
    toLowerCase() + '"...");
     
  10. LuckyZeeRo

    LuckyZeeRo Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    ... - остальное, что не имеет значения в конкретном вопросе.
     
  11. Автор темы
    EwrsPlay

    EwrsPlay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Ewrs728
    Туда ничего не писать? :D
    Вообще не врубаюсь

    Вот тот же toLower, он сделает маленьким, а ник может быть HeasGsbW
    И попробуй сравнить, а потом вывести правильный регистр
     
    Последнее редактирование: 12 ноя 2018
  12. alexandrage

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

    Баллы:
    173
    Забей и юзай тип записи varchar(16). Там в селекте не проверяется регистр.
     
  13. FrYYYze__YT

    FrYYYze__YT Ньюби

    Баллы:
    1
    Имя в Minecraft:
    ne_lox_fryyyze
    Вот у меня такая же проблема. Я ниче не понял, кто-то пишет про low, кто-то про Select
    у меня все username varchar(16) что дальше?
     
  14. alexandrage

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

    Баллы:
    173
    Тогда тебе не нужно парится с такими проблемами.
     
  15. Автор темы
    EwrsPlay

    EwrsPlay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Ewrs728
    Вот у меня тоже varchar(16). Но когда игрок заходит, ему предлагает авторизироваться. А мне нужно так, чтобы если ник не TesT, а TEST, то его не пустит и напишет, что ник должен быть "TesT"
     
  16. alexandrage

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

    Баллы:
    173
    Не юзать where binary в селекте.
     
  17. Автор темы
    EwrsPlay

    EwrsPlay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Ewrs728
    Так этого нету в DemAuth.
     
  18. Code

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    кинь КОД а потом спрашивай КАК. откуда мы знаем что ты уже написал. про varchar(16) вообще в первый раз такое слышу
     
  19. Автор темы
    EwrsPlay

    EwrsPlay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Ewrs728
    Зачем тебе вообще в этой ситуации код? XD
    У меня есть БД, в ней ники игроков. Если ник одного игрока "test", а в БД есть "TEsT", то "test" не впустит. Я спрашиваю, как сравнить.
     
  20. alexandrage

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

    Баллы:
    173
    SELECT * FROM users WHERE user = ?;
    https://github.com/alexandrage/Example/blob/master/src/Example/db/MySQL.java
     

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