Как отклонить запросы DML и DDL? - PullRequest
0 голосов
/ 05 сентября 2018

Я согласен, что привилегии пользователя базы данных должны быть настроены так, чтобы он не выполнял запросы DML или DDL, но я пытаюсь сделать то же самое со стороны клиента. Сторона JDBC.

Я скачал найденный драйвер Oracle здесь .

Пока драйвер и его JAR-файлы находятся в пути к классам, я запустил следующий фрагмент кода теста:

Connection connection = DriverManager.getConnection(url, username, password);
connection.setAutoCommit(false);
// connection.setReadOnly(true); // Doesn't help

Statement statement = connection.createStatement();
statement.executeQuery("ALTER TABLE GELBANA_TEST.TABLE1 ADD HQ varchar2(40) DEFAULT 'NY'");

connection.rollBack();

Но столбец добавляется в таблицу !!

Я также могу опустить столбец. Разве этого не должно быть достаточно, чтобы запретить пользователю выполнять запросы DML или DDL? Мне нужно помешать ему внести какие-либо изменения в базу данных. Ему должно быть разрешено только выбирать данные. Я проверил параметры URL-адреса соединения на предмет чего-то, что могло бы отклонить такие запросы, но не нашел ничего близкого.

...