Получение UUID из базы данных

Версия Minecraft
1.12.2
201
6
32
Суть такова.
При первом заходе игрока, сохраняю его ник, uuid и рандомное число в SQLite.

Позже, мне нужно получить его ник и это число, ключом UUID.

Но когда я отправляю запрос в базу данных, UUID не передается целиком,
вот полный UUID - d74b7262-72f0-3167-bd40-d00c95310113
вот UUID который передается - d74b7262

почему оно обрезается? как это исправить?

Вот метод отправления запроса для получения UUID:
Java:
public List<DataBaseLog> getLogs(UUID uuid)
    {
        List<DataBaseLog> logs = new ArrayList<>();
        try {
            Connection c = getConnection();
            Statement s = c.createStatement();
            
            ResultSet result = s.executeQuery("SELECT 'uuid', 'name', 'randomint' FROM player_uuid WHERE 'uuid' = " + uuid.toString());
            
            while(result.next())
            {
                logs.add(new DataBaseLog(result.getString("name"), result.getString("uuid"), result.getString("randomint")));
            }
            
            s.close();
            c.close();
        }
        
        catch (Exception e)
        {
            e.printStackTrace();
        }
        
        return logs;
    }

P.S В базе данных UUID отображается нормально.
 
Решение
Используй PreparedStatement и не будет проблем с кавычками, инъекциями и прочим.
А еще лучше - найди себе какую-то либу для работы с БД. Я юзаю sql2o - easy database query library - маленькая, удобная и практически никак не влияет на перфоманс.
Если работа с базой частая, то открывать/закрывать постоянно соединение очень дорого. Нужно юзать пул соединений, советую глянуть в сторону HikariCP или dbcp2.
292
14
160
'uuid' = " + uuid.toString()
Значения переменных в запросах всегда нужно оборачивать в кавычки, а названия таблиц и колонок нужно оборачивать в `
Т.е. в твоём случае это должно выглядеть как-то так:
1588507674264.png
форум ломает всё форматирование из-за кавычек даже в блоке CODE, поэтому скрином
 
Последнее редактирование модератором:

tox1cozZ

aka Agravaine
8,455
598
2,892
Используй PreparedStatement и не будет проблем с кавычками, инъекциями и прочим.
А еще лучше - найди себе какую-то либу для работы с БД. Я юзаю sql2o - easy database query library - маленькая, удобная и практически никак не влияет на перфоманс.
Если работа с базой частая, то открывать/закрывать постоянно соединение очень дорого. Нужно юзать пул соединений, советую глянуть в сторону HikariCP или dbcp2.
 
Сверху