我需要使用JDBC来创建新的Oracle用户。新用户的用户名和密码由用户通过GUI提供。以下代码工作正常(我也可以使用Statement而不是PreparedStatement)。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语句不起作用。如何解决我的问题?提前致谢。
好的,我明白了。我只需要使用正常的语句,并用双引号括住用户名和密码。谢谢! – user3573403