0

だから私は母の慈善プロジェクトのタスクフォースのスケジュールに取り組んでいます. 目的は、ボランティアをチェックインし、時間の名簿と彼らがどの駅にいるかを表示することです。データベースからデータを取得し、入力したユーザー名 (ドロップダウンから) とパスワードが正しいかどうかを確認するログイン フォームの作成に成功しました。'cbxUsername'ウィンドウのロード時にメインメソッド内で呼び出されるユーザー名ドロップダウンを埋めるために、このメソッドがあります(注:ログインフォームの場合、機能し、問題ではありません) :

public void loginToProgram() throws Exception{
        user = (String) cbxUsername.getSelectedItem();
        if(user == "Please select a username"){
            JOptionPane.showMessageDialog(null, "Sorry, You need to select a username to continue");
        }else if(txtPassword.getText().length() == 0){
            JOptionPane.showMessageDialog(null, "Sorry, You need to enter a password to continue");
        } else {
            checkAuth();
        }

}

このメソッドは上で参照されています。これが checkAuth() メソッドです。

public void checkAuth() throws Exception{
    Class.forName("com.mysql.jdbc.Driver");

    Connection con = DriverManager.getConnection("jdbc:mysql://localhost/crm", "root", "t00rt00r");
    PreparedStatement statement = (PreparedStatement) con.prepareStatement("SELECT `password` FROM users WHERE `username` = '"+ user +"'");
    ResultSet result = statement.executeQuery();
    if(result.next() != false){
        pass = result.getString(1);
    }
    if(txtPassword.getText().equalsIgnoreCase(pass)){
        //JOptionPane.showMessageDialog(null, "Worked");
        CheckIn chk =  new CheckIn();

        chk.setVisible(true);
    } else {
        JOptionPane.showMessageDialog(null, "Sorry, wrong password");
    }
}

ここで、最初のコード (メソッド「loginToProgram()」) をコピーし、少し変更しました。

これで、「cbxCIFirstName」という名前の jComboBox を持つ「CheckIn」という名前の新しいウィンドウができました。このコンボボックスを埋めるコードは次のとおりです。

public static void fillFirstNameCombobox() throws Exception{
    Class.forName("com.mysql.jdbc.Driver");

    Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/crm", "root", "t00rt00r");
    PreparedStatement statement = (PreparedStatement) con.prepareStatement("SELECT `first_name` FROM `volunteers`");
    ResultSet result = statement.executeQuery();
    cbxCIFirstName.setToolTipText("Select a first name");
    cbxCIFirstName.setEditable(true);
    cbxCIFirstName.addItem("Please Select a first name");
    while(result.next()){
        cbxCILastName.addItem(result.getString(1));
    }
    System.out.println(result.getString(1));
}

注意してください:System.out.println(result.getString(1));コンソールで通過しているかどうかを確認するためだけにそこに配置しましたが、コンソールでは通過していません。私は何を間違っていますか?これが私の主な方法です:

public static void main(String[] args) throws Exception{

    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                fillFirstNameCombobox();
                CheckIn frame = new CheckIn();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

コメント、ガイド、チュートリアル、または私が考慮して試してみるものは何でも大歓迎です!

この投稿をお読みいただき、ありがとうございます。ご回答ありがとうございます、ジョシュ。

4

2 に答える 2

0

このスレッドを読んでいるすべての人のために、@javaBeginner (感謝) によって与えられた適切な prepareStatement メソッドを使用して修正し、メイン メソッドからメソッド「fillFirstNameCombobox()」を呼び出す代わりに、クラスのコンストラクターから呼び出しました。そのため、クラスは「ClockIn」と呼ばれ、コンストラクター/メソッド「ClockIn()」の最後の行で呼び出しました

于 2013-09-07T11:09:11.477 に答える