Как заключить в кавычки / экранировать идентификаторы, такие как имена столбцов с JDBC? - PullRequest
8 голосов
/ 10 января 2010

Различные серверы баз данных используют разные способы для цитирования и экранирования идентификаторов.

например. "foo bar" против `foo bar` против [foo bar], или" 10 "" "против" 10 \ "", или идентификаторы, такие как FooBar или массив, должны указываться в кавычках для некоторых баз данных, но не для других.

Существует ли какой-либо метод API, который правильно выполняет цитирование / экранирование для данного соединения с базой данных? Или какое-нибудь альтернативное решение?

Ответы [ 2 ]

12 голосов
/ 11 января 2010

Посмотрите на

DatabaseMetaData.getIdentifierQuoteString()

Я никогда не использовал его, но звучит хорошо :-)

getExtraNameCharacters() также может оказать некоторую помощь

3 голосов
/ 10 января 2010

Я думаю, что ответ на ваш вопрос заключается в том, что если вы пишете нейтральное к базе данных приложение с использованием JDBC, то вам нужно использовать нейтральные к базе данных имена, а не вещи, которые требуют особого экранирования для каждого поставщика базы данных.

В JDBC я ничего не знаю о том, что поддерживает это. Продукт ORM будет иметь дело с такими вещами.

Редактировать: Если вы пишете ORM, то я думаю, что для каждой поддерживаемой базы данных нужен отдельный класс генерации SQL, просто для обработки различного синтаксиса, поэтому вам придется написать это. Конечно, вы можете посмотреть на исходный код различных открытых ORM и посмотреть, как они справляются с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...