Выбор определенной строки SQL - PullRequest
0 голосов
/ 21 декабря 2018

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

пример:

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

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

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

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            joe@hotmail.co.uk         34590834ffjfdnkdfd
Frank22          Frank@gmail.com           ert543897ut034noegn
Ellie334         Ellie23@yahoo.co.uk       345903ejfbdvkdfvvdg

, где хэши паролей.

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

Ответы [ 6 ]

0 голосов
/ 21 декабря 2018

Для этого необходимо использовать смещение .

Выбор 1-го Username таблицы Table1

SELECT Username FROM Table1 LIMIT 1 OFFSET 0;

Обратите внимание, что значение смещения начинается с 0, а предел означает, сколько строк вы хотите выбрать одновременно.

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

0 голосов
/ 21 декабря 2018
SELECT
    *
FROM
    mytable
ORDER BY
    somefield
LIMIT 1 OFFSET 5;

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

0 голосов
/ 21 декабря 2018

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

Select username from userinfo where rownum = 1
0 голосов
/ 21 декабря 2018

Вы должны использовать первичный ключ в качестве столбца идентификации.Первичные ключи не могут быть нулевыми, поэтому у каждой строки будет уникальный идентификатор.Используйте это как ссылку для вызова определенных записей, таких как:

SELECT UserName
FROM UserInfo
WHERE Identity = 3;
0 голосов
/ 21 декабря 2018

Вы можете просто выбрать их все, а затем переместить курсор.

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));
}
0 голосов
/ 21 декабря 2018

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

Затем вы можете выбрать любое имя пользователя по его идентификатору.

Пример

SELECT Username FROM UserInfo WHERE ID = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...