Есть ли общий способ работы с различными строками подключения в C #? - PullRequest
0 голосов
/ 19 мая 2010

У меня есть приложение, которое должно подключиться к базе данных SQL и выполнить задание агента SQL.

Строка подключения, к которой я пытаюсь получить доступ, хранится в реестре, который достаточно легко извлекается.

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

Data Source=Server1;Initial Catalog=DB1;Integrated Security=SSPI;
Data Source=Server2;Initial Catalog=DB1;Provider=SQLNCLI.1;Integrated Security=SSPI;Auto Translate=False;

Я могу использовать объект типа System.Data.SqlClient.SqlConnection для подключения к базе данных с первой строкой подключения, однако, я получаю следующую ошибку, когда передаю вторую:

ключевое слово не поддерживается: 'поставщик'

Аналогичным образом, я могу использовать объект типа System.Data.OleDb.OleDbConnection для подключения к базе данных со второй строкой подключения, однако, я получаю следующую ошибку при передаче первой ей:

Поставщик OLEDB не был указан в ConnectionString '

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

У кого-нибудь есть предложения?

Ответы [ 2 ]

3 голосов
/ 19 мая 2010

Обычным способом обработки этого является сохранение уникального имени поставщика ADO.NET (отдельно от строки подключения) и использование фабрики поставщиков БД .

0 голосов
/ 19 мая 2010

Используйте SqlConnectionStringBuilder , инициализируйте его строкой соединения, найденной в реестре, и затем прочитайте его свойство ConnectionString, которое нормализует строку соединения с правильным синтаксисом клиента SQL.

...