java.sql.SQLSyntaxErrorException:ORA-00903:表名无效

java.sql.SQLSyntaxErrorException:ORA-00903:表名无效,java,sql,oracle,jdbc,syntax-error,Java,Sql,Oracle,Jdbc,Syntax Error,我在java应用程序的下拉列表中列出了所有表名。 我想在JLabel上显示表中的记录数。 但是我得到了以下错误 java.sql.SQLSyntaxErrorException:ORA-00903:表名无效 我试过这个: try { String tableName = LoginFrame.userName + "." + this.ddlTableName.getSelectedItem().toString(); JOptionPane.showMes

我在java应用程序的下拉列表中列出了所有表名。 我想在JLabel上显示表中的记录数。 但是我得到了以下错误

java.sql.SQLSyntaxErrorException:ORA-00903:表名无效

我试过这个:

try {
        String tableName = LoginFrame.userName + "." +    this.ddlTableName.getSelectedItem().toString();
        JOptionPane.showMessageDialog(null, tableName);
        pst = (OraclePreparedStatement) con.prepareStatement("select count(*) as num from '" + tableName + "'");
        rs = pst.executeQuery();
        while (rs.next()) {
            this.lblRecordStat.setText(rs.getString("num"));
        }
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex);
        System.out.println(ex);
    }
在Oracle中,引号(
s)用于表示字符串文字。对象名称(如表)不应被它们包围。失去引号,您应该可以:

pst = (OraclePreparedStatement) con.prepareStatement
          ("select count(*) as num from " + tableName);

您正在将字符串作为表名传递。Oracle中的表名可以在``qoutes内,也可以不带引号

pst=(OraclePreparedStatement)con.prepareStatement(“选择count(*)作为“+tableName”中的num);


控制台打印表名并检查它是否存在。
pst = (OraclePreparedStatement) con.prepareStatement("select count(*) as num from `" + tableName + "`");