ken*_*dds 3 java sql oracle jdbc
我有一个方法将执行一个查询,其中包含准备语句的QueryParameters列表.该HelperConnection和QueryParameter只是小的Java bean和基础上,应该是不言自明的get,你在这里看到的秒.我尝试做select * from dual用,而不是select * from ?其中的QueryParameter是一个字符串类型和值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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
The connection is: //.....My connection
The query is: select * from ?
The QueryParameters are:
String - dual
Run Code Online (Sandbox Code Playgroud)
我相信PreparedStatement参数仅适用于值 - 不适用于SQL查询的某些部分,例如表格.可能有一些数据库支持您要实现的目标,但我不相信Oracle就是其中之一.您需要直接包含表名 - 当然还要谨慎.
| 归档时间: |
|
| 查看次数: |
3924 次 |
| 最近记录: |