我在完成项目时遇到了问题。
我创建了一个JFrame
,其中包含JPanels
。第一个面板是登录面板,在用户输入他的ID和密码后,他将被引导到第二个面板,以查看保存在连接到我的Eclipse项目的数据库中的信息(ID,名称,医疗状况)。
“登录”按钮已经使用actionPerformed
进行查询,以验证密码和ID是否正确(如果它们存在于数据库中),以便用户可以成功登录。
我现在要做的是创建另一个查询,从数据库中获取(getText
)ID,姓名和医疗状况,具体取决于用户输入的ID登录时JTextField = idTXT
,第二个setText
中的JLabels
:IDdraw_LBL
,namedraw_LBL
,msdraw_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
任何帮助将不胜感激,提前致谢!
答案 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));
谢谢!