亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 JavaFX 獲取當前記錄的用戶 ID 和用戶名

使用 JavaFX 獲取當前記錄的用戶 ID 和用戶名

瀟湘沐 2023-08-09 15:30:57
我正在嘗試使用 JavaFX 創建一個應用程序。我想在成功登錄后獲取當前登錄的用戶 ID 和用戶名。我想將其顯示在主頁中。我怎樣才能做到這一點?請幫忙MediaController.java    @FXML    private Label tf_getname;    @FXML    void happyButton(ActionEvent event) {        DbConnect dbconnect=new DbConnect();        Connection conn=dbconnect.getConnection();        String username = tf_getname.getText();//        String source1 = event.getSource().toString(); //yields complete string        //String source2 = event.getPickResult().getIntersectedNode().getId(); //returns JUST the id of the object that was clicked//        System.out.println("Full String: " + source1);//        System.out.println("Just the id: " + source2);//        System.out.println(" " + source2);        try {            String sql = "SELECT name FROM users WHERE name='"+username+"'";            Statement stmt = conn.createStatement();            ResultSet rs = stmt.executeQuery(sql);            while(rs.next()){                tf_getname.setText(rs.getString("name"));            }        } catch (Exception e) {            System.err.println(e.getMessage());        }    }
查看完整描述

2 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

讓我說清楚,您有用戶登錄,然后將場景更改為主窗口,但您想記住登錄的用戶并在主頁上顯示該用戶名嗎?


聽起來您必須在場景之間傳遞數據。


為此,您需要在面向對象編程中解決這個問題。有一個代表您的用戶的對象類以及所有 getter 和 setter。


public class User {


    private String email;

    


    public User(String email) {

        this.email = email;

    

    }


    public String getEmail() {

        return email;

    }


}

當您在登錄時連接到數據庫時,驗證用戶,然后實例化“User”類的對象,然后將其傳遞到您正在加載的主窗口場景。


public class LoginController implements Initializable {

    public User user;



    // All your FXML code




  @FXML

void handleLogin(ActionEvent actionEvent) throws IOException {

    // Do your validation and then call the changeToMainWindow()

    changeToMainWindow();

}

}


在主窗口控制器中有一個“initData”類或其他東西。


喜歡


public void initData(User user) {

        selectedUser = user;

        labelUser.setText(selectedUser.getEmail());

    }

然后,在驗證后,從您的登錄類將數據發送到主窗口,然后通過實例化您的 User 來更改場景,然后將對象從第二個場景傳遞給 initData 方法。


//User validation, then:

// Get the FXMLLoader then

//Instantiate the mainwindow controller: 


 public void changeToMainWindow() throws IOException {

        FXMLLoader loader = new FXMLLoader();

        loader.setLocation(getClass().getResource("mainwindow.fxml"));

        Parent root = loader.load();

        Scene mainScene = new Scene(root);


        // access the controller

        MainWindowController mainWindowController = loader.getController();

        mainWindowController.initData(user);


        Stage primaryStage = (Stage) loginButton.getScene().getWindow();

        primaryStage.setScene(mainScene);

        primaryStage.show();

    }

然后登錄后,使用changeToMainWindow()方法,它將傳遞用戶。


在上面的例子中,我只是傳遞電子郵件,但你明白了。


查看完整回答
反對 回復 2023-08-09
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

我認為你的說法有問題。嘗試以下方法來設置和執行語句。


Statement stmt = con.createStatement();

        ResultSet rs = stmt.executeQuery("Select * from test");

        while(rs.next()){

            System.out.println(rs.getString("name"));

            con.close();

        }

        }catch(Exception e){

        }


查看完整回答
反對 回復 2023-08-09
  • 2 回答
  • 0 關注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號