如何从数据库中获取一行并在GUI Eclipse中显示它?

时间:2018-04-30 20:30:25

标签: java eclipse user-interface mysql-workbench eventhandler

我在完成项目时遇到了问题。

我创建了一个JFrame,其中包含JPanels。第一个面板是登录面板,在用户输入他的ID和密码后,他将被引导到第二个面板,以查看保存在连接到我的Eclipse项目的数据库中的信息(ID,名称,医疗状况)。

“登录”按钮已经使用actionPerformed进行查询,以验证密码和ID是否正确(如果它们存在于数据库中),以便用户可以成功登录。

我现在要做的是创建另一个查询,从数据库中获取(getText)ID,姓名和医疗状况,具体取决于用户输入的ID登录时JTextField = idTXT,第二个setText中的JLabelsIDdraw_LBLnamedraw_LBLmsdraw_LBL JPanel

请检查下面的代码:

        btnLogIn.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try{
                //setting visibility of panels
                patient_frame.setVisible(true);
                patient_login.setVisible(false);
                patient_appointments.setVisible(false);


                //connecting to database
                Class.forName("com.mysql.jdbc.Driver");
                Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/clinic", "root", "newpass"); 

                //verifying ID and password code   
                String query="select * from patients where P_ID=? and Password=?";   
                PreparedStatement pst=con.prepareStatement(query);

                pst.setString(1, idTXT.getText());
                pst.setString(2, passwordField.getText());

                ResultSet rs=pst.executeQuery();
                int count =0;
                while(rs.next()){
                    count=count+1;
                }
                if (count ==1){

                    JOptionPane.showMessageDialog(null, "Welcome!");

                }

                else{
                    JOptionPane.showMessageDialog(null, "Incorrect username or password.");
                }

                rs.close();
                pst.close();

我尝试编写另一个查询来从数据库中检索信息,但它不起作用:

                idTXT.getText();

                String query1="select * from patients where P_ID=?";
                PreparedStatement pst1=con.prepareStatement(query1);
                ResultSet rs1=pst1.executeQuery();

                while (rs1.next()){

                    IDdraw_LBL.setText(rs.getString("P_ID"));
                    namedraw_LBL.setText(rs.getString("Name"));
                    msdraw_LBL.setText(rs.getString("Medical_Situation"));

                }

                pst1.close();

            }catch(Exception exx) {
                JOptionPane.showMessageDialog(null, e);
            }

        }
    }

It gives me this long-window error when running the program

任何帮助将不胜感激,提前致谢!

2 个答案:

答案 0 :(得分:0)

您错过了查询的参数:

$ function transpose() { awk '{for(j=1;j<=NF;j++) a[NR,j]=$j}
                          END {for(i=1;i<=NF;i++) 
                                 for(j=1;j<=NR;j++) 
                                   printf "%s",a[j,i] (j==NR?ORS:OFS)}' "$1"; }

您已经定义了输入参数(String query1="select * from patients where P_ID=?"; PreparedStatement pst1=con.prepareStatement(query1); ResultSet rs1=pst1.executeQuery(); ),但在执行查询之前您没有对其进行分配。

例如:

?

答案 1 :(得分:0)

我发现我没有在while循环中正确地写ResultSet参数。它是rs1而非rs

  

IDdraw_LBL.setText(的 RS1 .getString(&#34; P_ID&#34));

谢谢!