【发布时间】:2023-04-03 06:30:02
【问题描述】:
下面的代码在java中不起作用。
Class.forName('oracle.jdbc.driver.OracleDriver');
Connection connection = DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:test', 'xyz', 'pass');
PreparedStatement stmt = connection.prepareStatement("set role ? identified by ?");
String role = "TEST_ROLE";
String pswd = "TEST_PASS";
stmt.setString(1, role);
stmt.setString(2, pswd);
stmt.execute();
而上面的代码抛出异常:
java.sql.SQLSyntaxErrorException: ORA-01937: missing or invalid role name
我在成功执行的命令模式下尝试了相同的角色和密码。
【问题讨论】:
-
角色名称是一个标识符。您不能在准备好的语句中将标识符作为参数传递。
-
尝试将参数连接到 SQL 并执行?
-
@GurV,我现在有连接参数的代码。但在记录器中它会打印密码。我需要避免在记录器中显示密码。
-
@user3515080:在这种情况下,您必须修改记录器。
标签: java oracle jdbc user-roles role