Выбор определенной строки SQL

Итак, у меня есть база данных (UserInfo) с атрибутами: имя пользователя, электронная почта, пароль и т. д. Но я пытаюсь ВЫБРАТЬ все значения из имени пользователя, но отдельно, чтобы я мог использовать их по отдельности как строки. Но я не могу найти синтаксиса, который позволяет вам выбирать из определенной строки.

пример:

SELECT Username FROM UserInfo WHERE **row number = 1**

так что он выбирает имя пользователя, где номер строки, например, равен 1. Любые идеи?

Вот код: Последний метод позволяет мне проверить количество полей под атрибутом Username, чтобы затем я мог создать размер массива с этим числом x.

public void declaringDataBase() throws SQLException{

    conObj = DriverManager.getConnection
    ("jdbc:derby://localhost:1527/UserInfo","UserInfo","1234");
    statObj = conObj.createStatement();

    }
public void DisplayUsers() throws SQLException{



   String query = "SELECT Username FROM WHERE rownum = 2";  

   declaringDataBase();
   rsObj = statObj.executeQuery(query);
    System.out.println(rsObj.getString(1));

}

public void returnNumberInUsernameColumn() throws SQLException{

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


   declaringDataBase();
   rsObj = statObj.executeQuery(queryCount);

 String x = null;

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

     }

   int returnValue = Integer.parseInt(x);
    System.out.println(returnValue);


}
}

База данных выглядит примерно так:

Username(PK)     EmailAddress              Password
Joe01            [email protected]         34590834ffjfdnkdfd
Frank22          [email protected]           ert543897ut034noegn
Ellie334         [email protected]       345903ejfbdvkdfvvdg

где хешируются пароли.

Я хочу выбрать, скажем, просто Frank22 или Joe01, используя какое-то целое число, чтобы я мог увеличивать его, чтобы получить другие значения в имени пользователя

"" где номер строки 1 "не имеет смысла, потому что в ваших строках нет чисел. Чего вы на самом деле пытаетесь достичь и почему? Конечно, поскольку имя пользователя является первичным ключом, поэтому оно уникально, поэтому оно делает имеет смысл выбирать этим, так как вы всегда получите ровно 1 или 0 строк. если это просто where Username = 'Joe01' или что-то еще. В противном случае я не уверен, почему вы хотите выбирать любую старую строку или использовать число Можете ли вы пояснить, чего вы пытаетесь достичь, если не этого?

ADyson 21.12.2018 11:33

Нет, я не буду знать имя пользователя, я пытаюсь заполнить массив (список) данными из имени пользователя, и для этого мне нужно заполнить каждый индекс каждым именем пользователя, и мне нужно разделить имена пользователей. Поскольку использование JDBC позволяет мне печатать имя пользователя всего столбца как 1 строку, мне нужно, чтобы они были разделены.

Franklin Memet 21.12.2018 11:35

«Поскольку использование JDBC позволяет мне распечатать имя пользователя целого столбца как одну строку»… нет, он должен вернуть вам набор результатов. Все интерфейсы БД позволяют это, иначе они были бы совершенно бесполезны. Понятия не имею, как вам удалось заставить его возвращать одну строку для всего этого. SELECT Username from UserInfo должен вернуть вам набор результатов с одним столбцом, и вы сможете перебрать все строки в таблице. Я думал, что любое руководство по JDBC покажет вам основы. Возможно, покажите нам свой Java-код, и мы расскажем, как вы его напортачили, и поможем исправить.

ADyson 21.12.2018 11:37

Я преобразовал набор результатов в строку чувак

Franklin Memet 21.12.2018 11:42

Не груби, я явно не эксперт Я студентка A-level

Franklin Memet 21.12.2018 11:43

«Я преобразовал набор результатов в строку» ... почему? Не делайте этого, сохраните его как набор результатов, и вы можете использовать его по назначению. Затем вы можете получить каждую отдельную часть данных в виде строки и использовать ее. P.S. Извините, я не хочу показаться грубым, извиняюсь, если вы так думали. Вы утверждали, что это «разрешено использовать только как строку», что совсем не соответствует действительности, поэтому я просто указал на то, что вы, должно быть, неправильно поняли и / или где-то напортачили. Опять же, если вы покажете нам Java, мы будем рады помочь вам исправить это, если вы не уверены.

ADyson 21.12.2018 11:46

хорошо, я отредактирую и опубликую

Franklin Memet 21.12.2018 11:50

Это: stackoverflow.com/questions/15517736/… может помочь вам понять, как структурировать код. Или это: herongyang.com/JDBC/sqljdbc-jar-ResultSet-Loop.html (игнорируйте тот факт, что это данные SQL Server, идея ResultSet должна быть такой же). В Интернете также есть десятки других примеров, если вы выполните поиск

ADyson 21.12.2018 12:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
705
5

Ответы 5

Если вы этого не сделаете, добавьте атрибут ID в вашу таблицу db.

Затем вы можете выбрать любое имя пользователя по его ID.

Пример

SELECT Username FROM UserInfo WHERE ID = 1

если я добавляю идентификатор в свою базу данных, возникает вопрос, как разрешить тем, кто входит в систему, автоматически назначать правильный номер идентификатора их полям?

Franklin Memet 21.12.2018 11:32

Думаю, вам придется заново заполнить базу данных

Jérémy Schaefer 21.12.2018 11:40

@ JérémySchaefer в коде OP. Имя пользователя уже является PK. Почему вы хотите добавить отдельный ключ? В любом случае, если вы прочитаете последние комментарии по основному вопросу, вы увидите, что то, о чем спрашивает OP, на самом деле не является реальной проблемой.

ADyson 21.12.2018 11:41

@ADyson Ясно, да ... Я думал, что единственная проблема заключалась в том, что этот PrimaryKey отсутствовал при первом редактировании сообщения, моя проблема!

Jérémy Schaefer 21.12.2018 12:40

Вы можете просто выделить их все и переместить курсор.

ResultSet rs = statement.executeQuery("SELECT Username FROM UserInfo");
rs.absolute(yourIndex);
String username = rs.getString(1);

Чтобы «получить другие значения в имени пользователя», вы можете перебирать набор.

rs.absolute(yourIndex);
System.out.printf("username at %d: %s%n", yourIndex, rs.getString(1));
while (rs.next()) {
    yourIndex++;
    System.out.printf("username at %d: %s%n", yourIndex, rs.getString(1));
}

Я попробую, кажется, что это слишком сложно

Franklin Memet 21.12.2018 11:36

@FranklinMemet Не уверен, что вы имеете в виду, это настолько просто, насколько возможно.

daniu 21.12.2018 11:37

Этот метод следует вызывать только для объектов ResultSet с возможностью прокрутки (тип TYPE_SCROLL_INSENSITIVE).

Franklin Memet 21.12.2018 11:37

Используйте ключевое слово rownum.

Select username from userinfo where rownum = 1

Синтаксис ROWNUM не существует в JDBC

Franklin Memet 21.12.2018 11:31

даже не в запросе? запрос не зависит от языка?

mehdi touil 21.12.2018 12:33

Столбец ROWNUM либо отсутствует в какой-либо таблице в списке FROM, либо отображается в спецификации соединения и выходит за рамки спецификации соединения, либо появляется в предложении HAVING и не входит в список GROUP BY. Если это оператор CREATE или ALTER TABLE, то «ROWNUM» не является столбцом в целевой таблице.

Franklin Memet 21.12.2018 12:36

Нет базы данных JDBC, это API подключения, база данных, которую вы используете, называется Derby, эквивалент rownum для дерби - это функция ROW_NUMBER (), здесь документация: db.apache.org/derby/docs/10.9/ref/rreffuncrownumber.html

mehdi touil 21.12.2018 14:53
SELECT
    *
FROM
    mytable
ORDER BY
    somefield
LIMIT 1 OFFSET 5;

этот пример дает вам 6-ю строку, смещение говорит ему пропустить первые 5 строк Работает в PostgreSQL и mySQL

где "somefield" - имя пользователя?

Franklin Memet 21.12.2018 11:29

вы можете игнорировать порядок, если не хотите заказывать пример: ВЫБЕРИТЕ имя пользователя ИЗ UserInfo LIMIT 1 OFFSET 2; даст вам Ellie334

Sashi yadav 21.12.2018 11:37

@FranklinMemet помог тебе?

Sashi yadav 01.04.2019 12:06

Для этого вы должны использовать компенсировать.

Selects 1st Username of table Table1

SELECT Username FROM Table1 LIMIT 1 OFFSET 0;

Note that offset value starts at 0 and limit means how many row(s) you want to select at once.

Для моего удобства вы должны использовать еще один столбец ID для этого CREATE TABLE TABLE3(ID INT PRIMARY KEY AUTO_INCREMENT,Name TEXT, Age INT); И использовать ALTER TABLE TABLE3 AUTO_INCREMENT=1 И после этого получить доступ к каждой строке с идентификатором

он работает на sqlite и sqlplus ... Какой из них вы используете?

Mayur Prajapati 21.12.2018 12:39

Используя JDBC, я не знаю, что это за СУБД, но MySQL - это синтаксис, который обычно подходит для него.

Franklin Memet 21.12.2018 12:42

Для моего удобства вы должны использовать еще один идентификатор столбца для этого CREATE TABLE TABLE3 (ID INT PRIMARY KEY AUTO_INCREMENT, Name TEXT, Age INT);

Mayur Prajapati 22.12.2018 04:45

Другие вопросы по теме