<分区>
我需要使用 JDBC 创建一个新的 Oracle 用户。新用户的用户名和密码由用户通过 GUI 提供。以下代码工作正常(我也可以使用 Statement 而不是 PreparedStatement)。
PreparedStatement preparedStatement = connection.prepareStatement("create user " + username + " identified by " + password);
preparedStatement.execute();
但由于用户名和密码由用户自行提供,其中可能包含空格、分号、引号等特殊字符,可能导致上述声明无效。我不希望我的代码对用户名和密码进行验证,并将其留给 Oracle 进行验证。因此,我想到了使用prepared statement中的参数来代替:
PreparedStatement preparedStatement = connection.prepareStatement("create user ? identified by ?");
preparedStatement.setString(1, userName);
preparedStatement.setString(2, password);
preparedStatement.execute();
但它根本不起作用。当我提供有效的用户名和密码时,我将收到“ORA-01935:缺少用户名或角色名”。这些参数似乎不适用于 CREATE、DROP、ALTER 语句。如何解决我的问题?提前致谢。