2015-12-23 5 views
1

Я работаю над программой Java, которая пытается сбросить пароль пользователя в oracle и sql-сервере. Этот пароль представляет собой случайный сгенерированный пароль, который будет иметь некоторый символ, который неприемлем как обычная строка. Например. ', "", ;set escape character in oracle

Команда, я использую для сброса пароля пользователя является:

оракул: ALTER USER <username> IDENTIFIED BY <password>

SQL-сервер: ALTER LOGIN <username> WITH PASSWORD = '<passowrd>'

Как я могу это сделать сброс так что он может принимать все виды специального характера?

Я сделал google и узнал о quoting method:. Также я узнал об использовании одного кода и двойного кода. Но что, если созданный пароль содержит " или такой же разделитель цитат внутри этого пароля? Тогда это будет проблемой.

Eg. IDENTIFIED BY 'jks'k"fjh''d' 
Eg. password = q[#kkksdj#jsksls#] 
Eg. password = "nm.js""kh:kjhs" 

Есть ли способ сделать это в оракуле и sql-сервере? Или мне нужно избегать каждого символа один за другим из java перед отправкой в ​​oracle/sql-server? Моя программа сброса для oracle и sql-server отличается. Таким образом, метод может быть другим.

+0

Почему вы отметили 'sqlserver'? 'oracle' и' sqlserver '- это разные продукты RDBMS. –

+0

@LalitKumarB извините за это. Я редактирую сообщение уже –

+0

Хорошо. Я могу только ответить об Oracle. –

ответ

0

Но что, если пароль, сгенерированный есть "или же кавычки разделитель внутри этого пароль? Тогда это будет проблемой.

Да, конечно. Oracle зафиксировала его в Object Names and Qualifiers, который в равной степени относится и к пароль, а также.

Из documentation,

Пароли должны следовать правилам, описанным в разделе «Схемы объекта правила именования»

и самая важная часть:

Nonquoted идентификаторы могут содержать только буквенно-цифровые символы набор вашего характера базы данных и знак подчеркивания (_), знак доллара ($), и знак фунта (#). Ссылки на базы данных также могут содержать периоды (.) И «at» sign (@). Oracle настоятельно рекомендует вам использовать $ и # в невозводимых идентификаторах.

Квотные идентификаторы могут содержать любые знаки и знаки пунктуации , а также пробелы. Однако ни цитированные, ни некотируемые идентификаторы могут содержать двойные кавычки или нулевой символ (\ 0).

Таким образом, ни не цитируют ниnonquoted идентификаторов может содержать двойные кавычки.

Чтобы одиночные кавычки, вы могли бы использовать цитируемый идентификатор в с использованием двойной кавычки. Например,

SQL> create user test identified by "a'b'c"; 

User created.