Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于mysql工作台的JavaFX登录系统_Java_Mysql_Jdbc_Javafx_Mysql Workbench - Fatal编程技术网

基于mysql工作台的JavaFX登录系统

基于mysql工作台的JavaFX登录系统,java,mysql,jdbc,javafx,mysql-workbench,Java,Mysql,Jdbc,Javafx,Mysql Workbench,我对java和mysql完全陌生,我正在努力学习一些东西。 对于我正在进行的一个项目,我想创建一个登录系统,经理和员工可以在其中登录 在mysql工作台表中,我有两列需要用于登录。列为:用户名、密码和函数 到目前为止,我已经创建了一个登录系统,经理或员工可以在其中输入用户名和密码,然后登录。这个很好用 但是现在我想做它,这样我的代码将检查函数是等于0还是等于1。如果函数等于0,则您将以员工身份登录;如果函数等于1,则您将以经理身份登录。经理和员工登录的区别在于,我希望经理登录到名为manager

我对java和mysql完全陌生,我正在努力学习一些东西。 对于我正在进行的一个项目,我想创建一个登录系统,经理和员工可以在其中登录

在mysql工作台表中,我有两列需要用于登录。列为:用户名、密码和函数

到目前为止,我已经创建了一个登录系统,经理或员工可以在其中输入用户名和密码,然后登录。这个很好用

但是现在我想做它,这样我的代码将检查函数是等于0还是等于1。如果函数等于0,则您将以员工身份登录;如果函数等于1,则您将以经理身份登录。经理和员工登录的区别在于,我希望经理登录到名为managerhomemenus的场景,而员工登录到EmployeeHomeMenu

但正如我上面所说的,我对这个完全陌生,我不知道该怎么做才能做到这一点

非常感谢您的帮助

代码:

数据库连接:

package databasetesten.connection;

import java.sql.*;
import javax.swing.*;

/**
 *
 * @author Matt Holland
 */

public class ConnectionUtil {

Connection conn = null;

public static Connection connectdb() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://mhhproject.nl:3306/Management", "root", "root");
        return conn;
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
        return null;
    }
}
}
登录应用程序:

package databasetesten;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 * @author Matt Holland
 */
public class LoginApplication extends Application {

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

    public static void main(String[] args) {
        launch(args);
    }
}
FXMLDocument.fxml:

<?xml version="1.0" encoding="UTF-8"?>


<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="437.0" prefWidth="548.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.40" fx:controller="databasetesten.FXMLDocumentController">
<children>
<Button fx:id="button" layoutX="204.0" layoutY="162.0" onAction="#handleButtonAction" text="Login" />
<Label fx:id="label" layoutX="204.0" layoutY="269.0" prefHeight="17.0" prefWidth="149.0" />
<TextField fx:id="textEmail" layoutX="200.0" layoutY="65.0" />
<Label layoutX="107.0" layoutY="69.0" text="Username" />
<Label layoutX="107.0" layoutY="119.0" text="Password" />
<PasswordField fx:id="textPassword" layoutX="200.0" layoutY="115.0" />
</children>
</AnchorPane>
此数据库表如下所示:

The database table called employee looks like this:
username      password       function
Bob1          Welcome123     0
Ben1          Bensw123       1

您可以通过在
登录按钮
单击上触发一个事件来实现,该事件将运行您提到的功能。该函数可以检查提供的用户是否是
经理
员工
,并基于此(简单的if-else语句)可以加载适当的场景


此资源可以引导您完成此任务:

您可以通过在
登录按钮上触发事件来完成此任务,该按钮将运行您提到的功能。该函数可以检查提供的用户是否是
经理
员工
,并基于此(简单的if-else语句)可以加载适当的场景


此资源可以指导您完成此任务:

String sql=“从Employee中选择函数,其中用户名=?和密码=?”。。。场景=新场景(FXMLLoader.load(getClass().getResource)(resultSet.getInt(1)=0?“FXMLMenuEmployee.fxml”:“FXMLMenuManager.fxml”)???还要确保您正确地关闭了该语句。此外,在resultset/statement中使用字段而不是变量也没有意义!我尝试了你的代码,它几乎可以工作。现在的问题是,每次我作为员工和经理登录时,它都会将我作为经理登录。我不确定出了什么问题。
String sql=“从Employee中选择函数,其中username=?和password=?”。。。场景=新场景(FXMLLoader.load(getClass().getResource)(resultSet.getInt(1)=0?“FXMLMenuEmployee.fxml”:“FXMLMenuManager.fxml”)???还要确保您正确地关闭了该语句。此外,在resultset/statement中使用字段而不是变量也没有意义!我尝试了你的代码,它几乎可以工作。现在的问题是,每次我作为员工和经理登录时,它都会将我作为经理登录。我不确定出了什么问题。
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1">

</AnchorPane>
package databasetesten;

import databasetesten.connection.ConnectionUtil;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

/**
 *
 * @author Matt Holland
 */
public class FXMLDocumentController implements Initializable {

    @FXML
    private TextField textEmail;

    @FXML
    private PasswordField textPassword;

    Stage dialogStage = new Stage();
    Scene scene;

    Connection connection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;

    public FXMLDocumentController() {
        connection = ConnectionUtil.connectdb();
    }

    @FXML
    private void handleButtonAction(ActionEvent event) {
        String email = textEmail.getText().toString();
        String password = textPassword.getText().toString();

        String sql = "SELECT * FROM Employee WHERE username = ? and password = ?";

        try {
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, email);
            preparedStatement.setString(2, password);
            resultSet = preparedStatement.executeQuery();
            if (!resultSet.next()) {
                infoBox("Enter Correct Email and Password", "Failed", null);
            } else {
                infoBox("Login Successfull", "Success", null);
                Node source = (Node) event.getSource();
                dialogStage = (Stage) source.getScene().getWindow();
                dialogStage.close();
                scene = new Scene(FXMLLoader.load(getClass().getResource("FXMLMenuEmployee.fxml")));
                dialogStage.setScene(scene);
                dialogStage.show();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void infoBox(String infoMessage, String titleBar, String headerMessage) {
        Alert alert = new Alert(AlertType.INFORMATION);
        alert.setTitle(titleBar);
        alert.setHeaderText(headerMessage);
        alert.setContentText(infoMessage);
        alert.showAndWait();
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {

    }
}
The database table called employee looks like this:
username      password       function
Bob1          Welcome123     0
Ben1          Bensw123       1