Как сделать логин используя базу данных в интеллигентной идее - PullRequest
0 голосов
/ 17 мая 2019

, так что я очень новичок в javafx по идее intellij, у меня есть проблема, когда я подключился к базе данных mySQl в разделе базы данных, но теперь я нигде не могу найти, как выбрать все из моей базы данных без необходимости использовать строка подключения (потому что я уже связан с базой данных)

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

package sample;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

import java.io.IOException;
import java.sql.*;

public class logincontroller extends Application {


    public TextField txtusername;
    public PasswordField txtpassword;
    public Label labeltxt;
    public Button btnLogin;
    String username, password;
    Scene scene1;


    public static void main(String[] args) {
        launch(args);
    }


    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("Login.fxml"));
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }


    public void Login(ActionEvent actionEvent) throws IOException, SQLException {
        username = txtusername.getText();
        password = txtpassword.getText();

        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        String sql;

        sql = "SELECT * FROM users WHERE Inlognaam = 1 AND Wachtwoord = 2";
        preparedStatement.setString(1, username);
        preparedStatement.setString(2, password);
        resultSet = preparedStatement.executeQuery(sql);

        if (!resultSet.next()) {
            labeltxt.setText("Login Failed");
        } else {
            Parent root1 = FXMLLoader.load(getClass().getResource("Menu.fxml"));
            Stage secondarystage = new Stage();
            secondarystage.setScene(new Scene(root1));
            secondarystage.show();
            Stage stage = (Stage) btnLogin.getScene().getWindow();
            stage.close();
        }
        txtusername.setText("");
        txtpassword.setText("");
    }

}

это то, что у меня уже есть в данный момент

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

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

Обычно веб-сервер обрабатывает сеансы, поэтому, пожалуйста, прости меня за этот ответ.

Что вы можете сделать, это добавить токен, идентификатор, секретный код в вашу таблицу пользователей, которая будет отправлена ​​обратно вклиент.Затем в следующем контроллере после загрузки вторичной ступени вам нужно будет установить второе соединение с базой данных и выполнить новый SQL-запрос, используя секретный код для этого пользователя.Таким образом, ваша база данных может возвращать только записи, предназначенные для этого конкретного пользователя.

0 голосов
/ 17 мая 2019

В ответ на @GhostCat Это должно помочь вам начать работу.Однако убедитесь, что после использования Соединения вы его закрыли.То же самое с PreparedStatments всегда закрывайте их, если вы их не используете.

import java.sql.DriverManager;
import java.sql.SQLException;

public class Connector {
    public Connection con;
    private final String URL = "jdbc:mysql://localhost:3306/dbname";
    private final String USERNAME = "username";
    private final String PASSWORD = "password";

    /*
     * Adds DB Connection
     */
    public void add() {
        try {
                con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        } catch (SQLException se) {
            se.printStackTrace();
        }
    }
}```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...