Jdbc NetBeans无法检测从Oracle XE 11g创建的数据

Jdbc NetBeans无法检测从Oracle XE 11g创建的数据,jdbc,Jdbc,这是我用于搜索特定员工详细信息的代码片段 但我得到的输出是“未找到记录”,即使该记录实际上存在于oracle数据库表中 这是我的第一个项目,任何帮助都将不胜感激 我是否缺少任何代码行?我认为错误在您的SQL字符串中: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { String a = jTextField1.getText().trim(); Cla

这是我用于搜索特定员工详细信息的代码片段

但我得到的输出是“未找到记录”,即使该记录实际上存在于oracle数据库表中

这是我的第一个项目,任何帮助都将不胜感激


我是否缺少任何代码行?

我认为错误在您的SQL字符串中:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    try {
        String a = jTextField1.getText().trim();
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "SYSTEM", "tiger");
        PreparedStatement pst = conn.prepareStatement("Select * from EMS.EMP where 'ENo'=?");
        pst.setString(1, a);
        ResultSet r = pst.executeQuery();
        String s = "Status:";
        if (r.next()) {
            s = s + "\nName: " + r.getString(2);
            s = s + "\nAddress: " + r.getString(3);
            s = s + "\nDesignation: " + r.getString(4);
            s = s + "\nSSN: " + r.getString(5);
            s = s + "\nDepartment Number: " + r.getString(6);
            s = s + "\nBasic Pay: " + r.getString(7);
        } else
            s = s + "Record is not found";
        conn.close();
        JOptionPane.showMessageDialog(this, s);
    } catch (Exception e) {
        System.out.println(e);
    }
}
如果分配给bind参数的值是字符串
ENo
,则这将返回来自
EMS.EMP
的所有内容,否则不会返回任何内容

原因是在SQL中,
'ENo'
是一个字符串文本,它的意思是“仅是文本
ENo
”。我假设您的表中有一列名为
ENo
,您希望按该列中的值进行筛选。在这种情况下,您应该删除单引号:

    "Select * from EMS.EMP where 'ENo'=?"
或者使用双引号(取决于表的创建方式):

(ENo前后的双引号需要反斜杠转义,因为它们位于Java字符串中。)

    "Select * from EMS.EMP where ENo=?"
    "Select * from EMS.EMP where \"ENo\"=?"