새 Oracle 사용자를 생성하려면 JDBC를 사용해야합니다. 새 사용자의 사용자 이름과 암호는 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 문에는 매개 변수가 작동하지 않는 것 같습니다. 내 문제를 해결하는 방법? 미리 감사드립니다.
이제 알겠습니다. 난 그냥 정상적인 성명서를 사용해야하고 큰 따옴표로 사용자 이름과 암호를 묶어야합니다. 감사! – user3573403