Java MySQL PreparedStatement SELECT 语句

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)

twa*_*249 5

        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)