我需要检查用户名和密码。如果用户名和密码正确>打开新的FXML
现在我如何打开新的FXML如果用户名和密码是正确的?
错误:此处不允许使用注释
注意:操作代码在我的另一个登录按钮类中。
package game;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.sql.*;
public class db {
private Connection connection;
private PreparedStatement preparedStatement;
public db() throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/riverraider";
String user = "root";
String pass = "146155";
connection = DriverManager.getConnection(url,user,pass);
}
public void select(String username, String password) throws Exception {
String sql = "SELECT * FROM user WHERE username = ? AND password = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1,username);
ps.setString(2, password);
ResultSet result = ps.executeQuery();
if (result.next()){
@Override
public void start(Stage primaryStage) throws Exception {
Parent parent = FXMLLoader.load(getClass().getResource("/view/gameMenu.fxml"));
Scene scene = new Scene(parent);
primaryStage.setScene(scene);
primaryStage.show();
}
}else {
System.out.println("Incorect.");
}
}
}
答案 0 :(得分:1)
您的db
类不是JavaFX Application类。
此类应与JavaFX Application的其余部分分开,并从外部调用。 select()
还应返回boolean
值,表明其是否成功。
public class MyApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
DB db = new DB();
if (db.select("foo", "foopassword")) {
Parent parent = FXMLLoader.load(getClass().getResource("/view/gameMenu.fxml"));
Scene scene = new Scene(parent);
primaryStage.setScene(scene);
primaryStage.show();
}
}
public static void main(String[] args)
{
launch(args);
}
}
在调用数据库之前,您很可能已经打开了一个窗口,这样您就可以从用户那里获得用户名/密码。
您只需要自己创建一个新的Stage
并以相同的方式加载FXML。