2016-06-26 20 views
2

Я успешно создал онлайн-базу данных MySQL и подключил к ней свою java-программу.Как получить данные из базы данных MySQL?

Теперь я хотел бы получить данные из него: В моей таблице базы данных "playerdata" три строки:

ID, Имя пользователя, Пароль

Я создал JavaFX (изменено с свинг) окно с одной (для текстового поля имени пользователя), A Passwordfield (пароль) и кнопка для входа в

Это мой код события для кнопки:.

//makes a query in table "Login" searching for "username"s and "password"s 
String query = "select * from playerdata where username=? and password=?";     
//passing query to preparedStt (statement) 
PreparedStatement preparedStt = cnct.prepareStatement(query); 

//setting Strings for username and password 
preparedStt.setString(1, userName.getText()); //index 1 for username (upper ?) 
preparedStt.setString(2, userPassword.getText()); //index 2 for username (upper ?) (index starts at 1) 

ResultSet resSet = preparedStt.executeQuery(); //executes query result to resSet 

int count = 0; 

while(resSet.next()) { 
    count++; //increments counter 
} 

if(count == 1) { //goes one time if query matches user and pass 
    System.out.println("Access granted!"); 
} else { //otherwise login is incorrect 
    System.out.println("Access denied!"); 
    System.exit(0); 
} 

//closes resources 
resSet.close(); 
preparedStt.close(); 

Таким образом, этот запрос проходит через все имена пользователей и пароль, и если они совпадают с текстовым полем (userName) и паролем (UserPassword), он предоставляет доступ.

У меня возникла проблема! Как я уже упоминал выше, у меня было три строки, и этот запрос выполняет поиск двух строк. Я хотел бы знать ID игрока, который вошел в мою программу. Вы хоть представляете, как я могу заставить это работать?

Я уже пробовал сделать третий индекс (и id =?), А затем использовать resSet.getString(3), но он дает мне ошибку, в которой говорится, что индекс 3 не указан.

Спасибо.

ответ

1

Вы можете просто получить свой идентификатор так:

String query = "select * from playerdata where username=? and password=?"; //makes a query in table "Login" searching for "username"s and "password"s 

      PreparedStatement preparedStt = cnct.prepareStatement(query); //passing query to preparedStt (statement) 

      //setting Strings for username and password 
      preparedStt.setString(1, userName.getText()); //index 1 for username (upper ?) 
      preparedStt.setString(2, userPassword.getText()); //index 2 for username (upper ?) (index starts at 1) 

      ResultSet resSet = preparedStt.executeQuery(); //executes query result to resSet 

      int count = 0; 
      int id = 0; 
      while(resSet.next()) { 
       count++; //increments counter 
       id = resSet.getInt("id"); 
      } 

      if(count == 1) { //goes one time if query matches user and pass 
       System.out.println("Access granted!"); 
      } else { //otherwise login is incorrect 
       System.out.println("Access denied!"); 
       System.exit(0); 
      } 

      //closes connection 
      resSet.close(); 
      preparedStt.close(); 
+0

Спасибо! Работала отлично. Теперь это действительно очевидно. Я не знаю, почему я этого не видел. Ошибка состояла в том, что я попытался взять строку, но это Integer. – creativecreatorormaybenot

+0

добро пожаловать –

+0

, вы можете подтвердить свой ответ, если вы это поможете! –

Смежные вопросы