Statement在数据库中工作,但在Java代码中失败 -

时间:2012-08-14 07:35:59

标签: java jdbc oracle11g

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

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

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

2 个答案:

答案 0 :(得分:4)

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

尝试将它们作为

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

应该这样做。干杯。

答案 1 :(得分:3)

依赖于您的数据库jdbc驱动程序,驱动程序将不支持在一个“executeUpdate”中执行两个语句。你必须做类似的事情:

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