Возврат данных из массива в «естественном порядке» - PullRequest
0 голосов
/ 27 января 2019

Я создал базу данных, в которой хранятся различные атрибуты для данного пользователя. Я реализовал алгоритм, который принимает атрибут имени пользователя, сохраняет содержимое этого атрибута и сохраняет его в массиве. Однако по какой-то причине при печати массива он показывает пользователей в алфавитном порядке. Я хочу вернуть исходный порядок моей базы данных. Для контекста я использую JDBC API в Java, который использует синтаксис MySQL.

Я не реализовал ORDER BY оператор, это просто SELECT FROM WHERE оператор, но, кажется, он возвращается в алфавитном порядке.

public void DisplayUsers() throws SQLException {

   String queryCount = "SELECT COUNT(Username) FROM UserInfo";
   String query = "SELECT Username FROM UserInfo";  
   declaringDataBase();

   rsObj = statObj.executeQuery(queryCount);
   String x = null;

    while(rsObj.next()){
      x = rsObj.getString(1); 
     }

   int rowNum = Integer.parseInt(x);

   rsObj = statObj.executeQuery(query);

   String UserArray[] = new String[rowNum];
   int counter = 0;

   while(rsObj.next()){

       String user = rsObj.getString("Username");
       UserArray[counter] = user;
       System.out.println(UserArray[counter]);
       counter++;
   }

}

Строка declaringDatabase(); просто вызывает другой метод для подключения моей базы данных к коду. Оператор count берет число пользователей в атрибуте Username и создает целое число для хранения в качестве длины массива. Но в любом случае мой UserArray[] возвращает значения в алфавитном порядке, кто-нибудь знает почему?

1 Ответ

0 голосов
/ 27 января 2019

Я хочу вернуть исходный порядок моей базы данных.

Таблицы SQL представляют неупорядоченные наборы.(На самом деле, в математике наборы всегда неупорядочены.) Наборы результатов SQL неупорядочены *, если вы явно не включите предложение order by для самого внешнего select.

Итак, вам нужно включить порядок.

Большинство хорошо спроектированных баз данных имеют автоматически увеличивающийся идентификатор для каждой строки.Если у вас есть это, то легко получить набор результатов в порядке вставки:

SELECT Username
FROM UserInfo
ORDER BY UserId;  -- assuming `UserId` is an auto-incremented column

Если вы хотите упорядочить по алфавиту, то вы должны использовать:

ORDER BY Username

Если вы хотитечем выше производительность, тем лучше определить индекс для ключей, используемых для order by.

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...