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

2 つの異なる SQL ステートメントを 1 つにまとめて指定しないでください。JDBC ドライバーが 1 つの文字列として渡された 2 つのステートメントを実行する方法はありません。

それらを次のように実行してみてください

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 ドライバーによっては、ドライバーは 1 つの "executeUpdate" で 2 つのステートメントを実行することをサポートしていません。次のようなことをしなければなりません:

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