JDBCを使用して新しいOracleユーザーを作成する必要があります。新しいユーザのユーザ名とパスワードは、GUIを介してユーザによって提供される。次のコードは正常に機能します(PreparedStatementの代わりにStatementを使用することもできます)。ユーザー名とパスワードがユーザによって提供されているのでJDBC PrepareStatementパラメータがCREATE、DROP、ALTERで機能しない
PreparedStatement preparedStatement = connection.prepareStatement("create user " + username + " identified by " + password);
preparedStatement.execute();
しかし、彼らは、上記のステートメントが無効にするなどのスペース、半列、引用符などの特殊文字を含んでいてもよいです。私は自分のコードがユーザー名とパスワードの検証を行い、それを検証のためにOracleに残すことは望ましくありません。したがって、私は準備されたステートメントのパラメータを代わりに使用することを考えました:
PreparedStatement preparedStatement = connection.prepareStatement("create user ? identified by ?");
preparedStatement.setString(1, userName);
preparedStatement.setString(2, password);
preparedStatement.execute();
しかし、全く動作しません。有効なユーザー名とパスワードを入力すると、「ORA-01935:ユーザーまたはロール名が見つかりません」というメッセージが表示されます。パラメータはCREATE、DROP、ALTER文では機能しないようです。私の問題を解決するには?前もって感謝します。
これでわかりました。私は、通常のStatementを使用して、ユーザー名とパスワードを二重引用符で囲む必要があります。ありがとう! – user3573403