gpt4 book ai didi

java - JDBC PrepareStatement 参数不适用于 CREATE、DROP、ALTER

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:02:44 25 4
gpt4 key购买 nike

<分区>

我需要使用 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 语句。如何解决我的问题?提前致谢。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com