Pit*_*ita 1 java prepared-statement
我有一个数据库和一个 Java 程序。我正在尝试编写代码,以便如果在文本字段中输入 MockID 并按下提交按钮,则应从数据库中检索根据输入的 Mock ID 的详细信息并显示在文本区域中。下面是我写的代码。该代码现在可以在我进行修改后工作。但是,在 textarea 中,它实际上并未显示给定 Mock Id 的记录中的相关信息,而只是显示文本。有人可以建议吗?
JButton button = new JButton("Submit");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String mockId = textField.getText();
try {
String sql = "SELECT MockID, Subject, Year, Date FROM mockexam WHERE MockID =?";
PreparedStatement prest = con.prepareStatement(sql);
prest.setString(1, mockId);
prest.executeQuery();
textArea.append("MockID, Subject, Year, Date");
JOptionPane.showMessageDialog(frmFindMock, "Record has been updated.");
}
catch (SQLException e) {
//System.out.println("Record couldn't be added!");
e.printStackTrace();
JOptionPane.showMessageDialog(frmFindMock, "Record couldn't be updated. Please try again.");
}
}
});
button.setBounds(303, 60, 75, 23);
panel_1.add(button);
Run Code Online (Sandbox Code Playgroud)
String sql = "SELECT MockID, Subject, Year, Date FROM mockexam WHERE MockID =?";
PreparedStatement prest = con.prepareStatement(sql);
prest.setString(1, "MockID");
prest.setString(2, "Subject");
prest.setString(3, "Year");
prest.setString(4, "Date");
Run Code Online (Sandbox Code Playgroud)
这就是问题。在您的 sql 字符串中,您为 1 个参数(由 表示?)腾出了空间,但随后您尝试设置 4。因此您超出了界限。此外,由于您将 MockID、Subject、Year 和 Date 硬编码到语句中,因此没有理由setString尝试设置它们(错误地)。
要显示答案,请执行以下操作:
ResultSet rs = prest.executeQuery();
String result;
while(rs.next()) {
String id = rs.getString("MockID");
String subject = rs.getString("Subject");
String year = rs.getString("Year");
String Date = rs.getString("Date");
result += id + ", " + subject + ", " + year + ", " + date + "\n";
}
textarea.append(result);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22016 次 |
| 最近记录: |