如何解决java中的写数据定义操作?

如何解决java中的写数据定义操作?,java,sql,Java,Sql,我正在尝试执行以下查询: String sql="create or replace view toprecords as select * from(select directory_name,file_name,sum(value) from tfidfvalues where directory_name =? group by(directory_name,file_name) order by(sum(value)) desc) where rownum<=10";

我正在尝试执行以下查询:

    String sql="create or replace view toprecords as select * from(select directory_name,file_name,sum(value) from tfidfvalues where directory_name =? group by(directory_name,file_name) order by(sum(value)) desc) where rownum<=10";
                        stmt = con.prepareStatement(sql);
                        stmt.setString(1, directory_names.get(x));

                        stmt.executeUpdate();

那么如何克服这个异常呢?

消息说明了一切,在DDL操作中不能使用绑定变量


您需要做的是在不使用where子句的情况下创建视图,并在查询视图时应用筛选。

当我在oracle中执行它时,它工作正常。。。确切地说,您是如何在oracle中使用准备好的语句的?错误很明显,您不能在DDL中绑定变量operations@BrianRoach在oracle中,这意味着查询工作正常,但嵌入到prepare statementOr中时会显示错误,只需在Java中修改SQL字符串即可。显然,如果输入不可信,这可能会导致更大的问题。@Brian:是的,但你也只是在用这种方法解决根本问题。@Keppil我无法完全理解你想说的话。你能详细说明我该如何修改我的密码吗query@Subodh:我假设您稍后将查询您在此处创建的视图。因此,在创建视图时不使用where子句,而是在以后查询视图时使用它。这将给你同样的结果。@Keppil这不可能使视图非常大吗?如果频繁运行此操作,则可能会出现不希望出现的情况。。。
    java.sql.SQLException: ORA-01027: bind variables not allowed for data definition operations