当前位置: 首页 > 面试题库 >

ORA-00903:PreparedStatement上的表名称无效

杜君浩
2023-03-14
问题内容

我有一个方法,该方法将为准备好的语句执行带有QueryParameters列表的查询。该HelperConnectionQueryParameter只是小的Java
bean和基础上,应该是不言自明的get就是你在这里看到。我正在尝试select * from dual使用,而不是使用,select * from ?其中QueryParameter是STRING类型,值是dual。但是,我遇到了java.sql.SQLSyntaxErrorException: ORA-00903: invalid table name错误。我的代码和输出如下。这是怎么回事?

public static ResultSet executeQuery(HelperConnection helperConnection, String query, QueryParameter... params) throws SQLException {
  System.out.println("The connection is: " + helperConnection.getJdbcURL());
  System.out.println("The query is: " + query);
  if (params.length > 0) {
    System.out.println("The QueryParameters are:");
    System.out.println("\t" + StringHelper.splitBy(StringHelper.newline + "\t", params));
  }
  Connection conn = helperConnection.createOracleConnection();
  PreparedStatement pstmt = conn.prepareStatement(query);
  for (int i = 1; i <= params.length; i++) {
    QueryParameter param = params[i - 1];
    switch (param.getType()) {
      //Other cases here
      case QueryParameter.STRING:
        pstmt.setString(i, param.getValue());
        break;
    }
  }

  ResultSet rs = pstmt.executeQuery();
  conn.commit();
  return rs;
}

输出:

The connection is: //.....My connection
The query is: select * from ?
The QueryParameters are:
    String - dual

问题答案:

我相信PreparedStatement参数仅适用于
-不适用于SQL查询的一部分,例如表格。可能有一些数据库支持您要实现的目标,但我不认为Oracle是其中之一。您需要直接包含表名-当然,要谨慎。



 类似资料:
  • 参考表的所有细节都已填满。我的创建声明是: 我正在使用Oracle 10g Express Edition 我得到了oracle错误"ORA-00903:无效的表名"

  • 问题内容: 尝试在语句中使用a的别名时,我遇到了标题中所述的错误。这是代码: 我之前在select语句中使用过别名,因此我对为什么会收到此错误感到困惑。在这种情况下,它的工作方式是否有所不同? 问题答案: 在文档中(添加了重点): 您可以使用列别名来标记选择列表中紧接的前一个表达式,以便以新标题显示该列。别名在查询期间有效地重命名了选择列表项。 别名可以在子句中使用,但不能在查询中的其他子句中使用

  • 问题内容: 更新问题: 运行Postgres 7.4(是的,我们正在升级) 为什么我不能按列别名进行ORDER BY?也要在ORDER BY中使用tof。“ TypeOfFruits”,为什么? 截至目前的结果 期望的结果将是“其他”总数的一行,因此一共是四行(x将是总数) 问题答案: 您可以通过第一个字段“水果”订购。同样适用于 更新 对于订单,不要在中进行创建,而是在第二个位置中创建一个新列:

  • 我正在尝试使用oracledb客户端从nodejs对oracle数据库执行查询,并得到“ORA-01036:非法变量名/编号”。我尝试了多种建议的方法来传递我的变量,但失败了。使用硬代码值的查询。 以下是我的示例代码: 获取"ORA-01036:非法变量名称/数字"或空结果

  • 我在 Azure 表存储中有下表名称。表名是在我的应用程序中自动生成的,然后使用表创建。创建如果不存在(表名)。有些有效,有些则不然。当我深入研究错误时,扩展的错误信息告诉我资源名称包含无效字符 - 但是我无法弄清楚失败名称中无效的内容 - 任何人都可以发现这一点吗? -指定的资源名称包含无效字符 -指定的资源名称包含无效字符 –工程

  • 我试图使用以下语句将列添加到现有数据库列中: 我得到以下回复: 从命令中的第1行开始的错误-ALTER TABLE REVISION ADD COLUMNIS_BLACK(1) 错误报告-SQL错误: ORA-00904:: 无效标识符00904.00000-"%s:无效标识符"*原因: *操作: 修订版是一个表格,我可以在上面运行describe,它会输出结果。什么是无效标识符?很迷茫,网上找不