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