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

我有一个方法,该方法将为准备好的语句执行带有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是其中之一。您需要直接包含表名-当然,要谨慎。

以上是 ORA-00903:PreparedStatement上的表名称无效 的全部内容, 来源链接: utcz.com/qa/403760.html

回到顶部