3
CREATE USER Person identified by 2012;GRANT ALL PRIVILEGES TO Person;

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

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

2 回答 2

4

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

尝试将它们执行为

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

应该这样做。干杯。

于 2012-08-14T07:47:10.043 回答
3

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

Statement stmt = conn.createStatement();
for(String statement : statements) {
    stmt.addBatch(statement);
}
stmt.executeBatch();
于 2012-08-14T07:42:29.033 回答