2016-09-26 14 views
2

Мне нужно найти метаданные таблицы РСУБД для приложения. Я могу найти метаданные столбцов, существование таблицы, используя java.sql.DatabaseMetaData, и количество строк, выполнив запрос на java.sql.Statement.Есть ли способ проверить чтение, запись информации для таблиц в общем случае для баз данных РСУБД?

Как нужно проверить

  • булева CanRead()
  • булева canWrite()

на столе.

Я нашел isReadOnly() метод в DatabaseMetaData класс. Но это

Извлекает, находится ли эта база данных в режиме только для чтения.

Есть ли способ проверить эти функции в общем случае для баз данных РСУБД на уровне таблицы?

+0

Я полагаю, вы спрашиваете, есть ли способ * кроме * попытка прочитать строку, начать транзакцию, попытаться написать строку и отменить транзакцию. Правильно? –

+0

@MikeNakis да .. –

ответ

0

Вы ищете getTablePrivileges()

Извлекает описание прав доступа для каждой таблицы доступны в каталоге. Обратите внимание, что привилегия таблицы применяется к одному или нескольким столбцам в таблице. Было бы неправильно считать, что эта привилегия распространяется на все столбцы (это может быть верно для некоторых систем, но это не верно для всех.)

колонна PRIVILEGE из ResultSet будет содержать информацию, которую вы ищете. Если я правильно помню, вы получите одну строку в результате для каждой предоставленной привилегии.

Как JavaDoc для getTablePrivileges() предполагает, что вам может понадобиться также проверить getColumnPrivileges() - но это зависит от случая использования и СУБД вы ожидаете, чтобы поддержать