【问题标题】:Statement works in database, but fails in Java code -语句在数据库中有效,但在 Java 代码中失败 -
【发布时间】:2012-08-10 11:26:09
【问题描述】:
CREATE USER Person identified by 2012;GRANT ALL PRIVILEGES TO Person;

Oracle 11g (GUI) 成功执行了这些语句。但是,当我完全复制并粘贴上面的语句并尝试使用executeUpdate(String sql) 执行它时,我得到了下面的异常。为什么?

java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

【问题讨论】:

  • 您不需要分开查询吗?我的意思是两个独立的executeUpdate
  • 您尝试按原样执行它们,即一起执行?
  • @MatinKh - 我不知道这是必要的。

标签: java jdbc oracle11g


【解决方案1】:

你不应该把两个不同的 SQL 语句当作一个。 JDBC 驱动程序无法执行作为一个字符串传递的两条语句。

尝试将它们执行为

Statement stmt = conn.createStatement();
stmt.executeUpdate("CREATE USER Person identified by 2012");
stmt.executeUpdate("GRANT ALL PRIVILEGES TO Person;");

应该可以。干杯。

【讨论】:

    【解决方案2】:

    取决于您的数据库 jdbc 驱动程序,该驱动程序将不支持在一个“executeUpdate”中执行两个语句。您必须执行以下操作:

    Statement stmt = conn.createStatement();
    for(String statement : statements) {
        stmt.addBatch(statement);
    }
    stmt.executeBatch();
    

    【讨论】:

    猜你喜欢
    • 2017-06-25
    • 1970-01-01
    • 2013-08-02
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    相关资源
    最近更新 更多