Определить строковые литералы Escape-символы в Ado.net - PullRequest
2 голосов
/ 22 июля 2009

При наличии любого DbConnection от любого провайдера данных, возможно ли определить символ или символы, используемые для цитирования строкового литерала, а также экранировать любые специальные символы в строке? Меня также интересуют символы, необходимые для цитирования идентификаторов имен схем / таблиц / столбцов.

Использование параметров для указания этих вещей не вариант, так как цель моего приложения - помочь пользователям построить запрос SQL, а наличие констант в запросе является распространенным сценарием.

Я могу использовать коллекцию схем DataSourceInformation, чтобы получить что-то вроде StringLiteralPattern и QuotedIdentifierPattern (см. http://msdn.microsoft.com/en-us/library/ms254501.aspx), но это только помогает мне сопоставлять существующие строки, а не создавать их самостоятельно.

Ответы [ 2 ]

1 голос
/ 23 июля 2011

После создания соединения (называемого cnn) я сделал следующее для цитирования идентификаторов схемы / таблицы / имени столбца:

'Get table and column delimiters
Dim sTest As String = ""
Dim sLeftDelimiter As String = ""
Dim sRightDelimiter As String = ""
Dim cmd As DbCommand = cnn.CreateCommand()
Dim adapter As DbDataAdapter = factoryDB.CreateDataAdapter()
Dim builder As DbCommandBuilder = factoryDB.CreateCommandBuilder()
cmd.Connection = cnn
adapter.SelectCommand = cmd
builder.DataAdapter = adapter
sTest = builder.QuoteIdentifier("test")
sLeftDelimiter = sTest.Substring(0, 1)
sRightDelimiter = sTest.Substring(5, 1)
0 голосов
/ 09 сентября 2009

Я использую оператор switch в зависимости от типа и версии провайдера (как определено в DbConnection), чтобы узнать, какие разделители / escape-символы использовать.

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