Уроки Java для профессионалов | #12 - Авторизация в приложении

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

✔ -------------

- Уроки от #GoshaDudar 👨🏼‍💻
- Все уроки по хештегу #GoshaJavaProfi
Рекомендации по теме
Комментарии
Автор

9:36 Нажмите на лампочку и Surroynd width try/catch нету, прописал в ручную. Спасибо, работает!

ВалентинГлобалов
Автор

Понимаю, что курс старый, но вместо подсчёта строк с нужным логином и паролем можно просто:
if (rs.next())

else
// анимация

metabrix
Автор

Спасибо за конструктор, надоело делать везде запросы

zet
Автор

В DatabaseHandler пришлось изменить синтаксис на String select = "select * from users where username =? AND password =?";

viacheslav
Автор

выдает ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''cody' AND password='111'' at line 1


класс DatabaseHandler
package sample;
import java.sql.PreparedStatement;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.ResultSet;


public class DatabaseHandler extends sample.Configs {
Connection dbConnection;

public Connection getDBConnection() throws ClassNotFoundException, SQLException {
String

dbConnection=DriverManager.getConnection(connectionString, dbUser, dbPass);
return dbConnection;
}
public void signUpUser (sample.User user) {

String insert ="INSERT INTO "+sample.Const.USER_TABLE+ "(" + sample.Const.USERS_FIRSTNAME+", "+sample.Const.USERS_LASTNAME+", "
+sample.Const.USERS_USERNAME+", " +sample.Const.USERS_PASSWORD+", " +sample.Const.USERS_LOCATION+", " +sample.Const.USERS_GENDER+
")"+ "VALUES(?, ?, ?, ?, ?, ?)";
try {
PreparedStatement prST=
prST.setString(1, user.getFirstName());
prST.setString(2, user.getLastName());
prST.setString(3, user.getUserName());
prST.setString(4, user.getPassword());

prST.setString(5, user.getLocation());


prST.setString(6, user.getGender());

prST.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

}

public ResultSet getUser(sample.User user){

ResultSet resSet= null;

String select ="SELECT * FROM "+sample.Const.USER_TABLE+ "WHERE" + ? AND "
try {
PreparedStatement prST=
prST.setString(1, user.getUserName());
prST.setString(2, user.getPassword());

resSet=prST.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return resSet;

}


}


класс Contoller
package sample;

import java.io.IOException;
import java.net.URL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import
import
import javafx.stage.Stage;
import sample.DatabaseHandler;

public class Controller {

@FXML
private ResourceBundle resources;

@FXML
private URL location;

@FXML
private TextField login;

@FXML
private PasswordField pass;

@FXML
private Button logButton;

@FXML
private Button signButton;

@FXML
void initialize() {
logButton.setOnAction( e->{
String loginText= login.getText().trim();
String loginPassword= pass.getText().trim();
if

loginUser(loginText, loginPassword);

}
else {
System.out.println("field is empty");
}




}



);
signButton.setOnAction( e-> {


FXMLLoader loader= new FXMLLoader();

try {
loader.load();
} catch (IOException e1) {
e1.printStackTrace();
}
Parent root= loader.getRoot();
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.showAndWait();
}

);

}

private void loginUser(String loginText, String loginPassword) {
DatabaseHandler dbHandler= new DatabaseHandler();
sample.User user = new sample.User();
user.setUserName(loginText);

ResultSet result= dbHandler.getUser(user);
int counter = 0;
try {while (result.next()){
counter++;
}
} catch (SQLException e) {
e.printStackTrace();
}
if (counter>=1){



}

}
}

Vn
Автор

Гоша, спасибо за твои старания! Ты лучший! Продолжай в том же духе)

sorochinsky
Автор

Спасибо за твой труд Гоша, интересно рассказываешь. Единственный минус это описание видео. Тема эта далеко не для профессионалов, а для новичков или максимум для слабо продвинутых :)

NireTheBest
Автор

Просто оставлю коммент, чтобы хоть немного продвинуть видео.

ЧеловексТопором
Автор

Parameter index out of range (6 > number of parameters, which is 2).

TheEmeric
Автор

Гоша, а какие твои давние уроки по python нужно усвоить, чтобы знать БАЗОВЫЙ СИНТАКСИС python?

romikgamer
Автор

Не совсем по теме, но хочу задать вопросик. Ну, а т.к. это последнее на данный момент видео, то сделаю это тут..)
Мечтаю связать свою жизнь с геймдевом. Вероятнее всего, в области дизайна(особенно привлекает левел-дизайн).
Но не понимаю, на какую сферу идти учиться, чтобы было хоть какое-то официальное свидетельство о том, что я подхожу этой профессии? Учиться в чём-то вроде Scream School - денег попросту не хватит.
Пойти в любой техникум ( например МИФИ; р/т им. Попова - самые доступные в моей ситуации), а там уже, попутно с учёбой на специальность "Программирование в компьютерных системах" или "web-дизайн", просто быть самоучкой или влезть куда-то вроде Geek Brains, что можно тоже прировнять к некому само-учению? Не будет ли таким образом серьёзных проблем с трудоустройством? ПАМАГИТЕ в общем :c

last-dinosaur
Автор

а как сделать приложение чтобы заходить на сайт по логину и паролю ?

KOVU
Автор

Парень я знаю ты стараешься, но сейчас нет времени этим заниматься) потом когда нить посмотрю твои годные видео)

coldat
Автор

Скинь ссылки на твои сделаные и выложеные игры

skorpopio
Автор

Подскажите пожалуйста мне надо получить значения из textField прописал String b = InputWord.getText().trim(); и выдает ошибку когда программа доходит до этого момента. Что делать?

ПавелШевчук-ьъ
Автор

Прошу помощи, не могу найти решение уже второй день. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near at line 1. Понятно что проблема в синтаксисе исходя из перевода, но выполнено всё точь в точь как в видео

ЯрославВащенко-дй
Автор

когда я нажимаю на кнопку войти выходит вот такая ошибка
Exception in thread "JavaFX Application Thread"
at
at
уже 2 дня пытаюсь исправить, помогите

Tom-rvzw
Автор

Здравствуйте, у меня проблема)
При попытке авторизоваться всегда выскакивает текст что логин и пароль пустые
Хотя я туда набираю пользователя который есть в базе данных

Вот код loginUser
private void loginUser(String loginText, String loginPassword) {
DatabaseHandler dbHandler = new DatabaseHandler();
User user = new User();
user.setLogin(loginText);

ResultSet result = dbHandler.getUser(user);

int counter = 0;
try {
while (result.next()) {
counter++;
}
}catch (SQLException e){
e.printStackTrace();
}
System.out.println(counter);
if(counter >= 1){

}
}

Вот код getUser
public ResultSet getUser(User user){
ResultSet resSet = null;
String select = "SELECT * FROM " + Const.USER_TABLE + " WHERE " + Const.USERS_LOGIN + "=? AND " +
Const.USERS_PASSWORD + "=?";

try {
PreparedStatement prSt =
prSt.setString(1, user.getLogin());
prSt.setString(2, user.getPassword());

resSet = prSt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return resSet;
}
}

Помагите плиииз

daniil_dobryanskiy
Автор

не работает почему-то, если вводить русские имена!

channelMy
Автор

как создать пользователя User без параметров когда у него в конструкторе их 6?...

Nelsons