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

Надеюсь, это должно быть легко для тел Oracle.

Итак, в дополнение к моему предыдущему Вопросу, теперь мне нужно иметь возможность обработать строку подключения в C# и решить, следует ли выполнить поиск LDAP по значению "Источник данных" (если это имя службы), или просто принять его как это (дескриптор соединения). Каков наилучший и наиболее определенный способ сделать это? Я не хочу заниматься бесполезными вещами, такими как проверка, является ли первый символ открытой скобкой. Я ищу определенный шаблон / подпись, чтобы определить, является ли "Источник данных" именем службы или дескриптором соединения.

Например (как получено здесь), с именем службы, это может быть так:

Источник данных =TORCL; Идентификатор пользователя = myUsername; Пароль =myPassword;

С дескриптором соединения это может быть так:

Источник данных =(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID))); Идентификатор пользователя = myUsername;Password= MyPassword;

Благодарю.

1 ответ

В отсутствие ответа я разработал свое собственное решение, которое не является сложным, и я предположил, что дескриптор соединения всегда будет содержать "ОПИСАНИЕ". Если это предположение верно, решение верное. Если нет, то, пожалуйста, не стесняйтесь предложить свой собственный...

string dataSource = connectionString.Split(';').Select(x => x.Split('=')).Single(x => x.First() == "Data Source").Last();
bool isConnectDescriptor = dataSource.IndexOf("DESCRIPTION", StringComparison.OrdinalIgnoreCase) >= 0;
Другие вопросы по тегам