DSN для подключения строки? - PullRequest
4 голосов
/ 17 июня 2009

У нас есть веб-сайт ASP.NET, который использует базу данных, для которой мы хотим иметь возможность использовать строку подключения для доступа. Мы успешно настроили DSN для подключения к этой БД, но я не могу найти правильную магию для использования со строкой соединения.

Есть ли простой способ перевести значения из DSN в строку подключения? Я знаю, что из пользовательского интерфейса нет очевидного ответа на этот вопрос ... каждый поставщик БД предоставляет свой пользовательский интерфейс для создания DSN в зависимости от своих требований. Однако я надеялся, что под пользовательским интерфейсом это может быть что-то вроде создания строки подключения за кулисами, и я мог бы посмотреть на это, чтобы увидеть, что я делаю неправильно. Есть надежда на это? Если да, какие-нибудь указатели на то, как получить информацию, которая мне нужна?

(Я пошел на connectionstrings.com, чтобы убедиться, что моя строка подключения имеет правильный формат, но, похоже, ничего не работает ... именно поэтому я пытаюсь использовать этот странный такт translate-from-dsn .)

РЕДАКТИРОВАТЬ: Что-то, что я, должно быть, не понял, что мы не хотим иметь запись DSN. Мы создали один и использовали его в настоящее время, но мы хотим иметь возможность избавиться от него и использовать строку подключения без a dsn.

Ответы [ 4 ]

6 голосов
/ 17 июня 2009

Если вы можете использовать OLEDB, то вы можете создать UDL-файл . Просто создайте новый текстовый документ, test.udl и дважды щелкните. Заполните диалоговое окно, затем снова откройте его с помощью Блокнота. Вуаля - это ваша строка подключения.

ODBC немного сложнее - вы можете создать файл DSN из ODBC Administrator или просмотреть реестр в HKLM\Software\ODBC\ODBC.INI\<DSN Name> для системного DSN. В итоге вы получите несколько пар имя / значение. Вы должны быть в состоянии перевести их в строку подключения. В \\Driver будет указана фактическая DLL, поэтому вам нужно получить имя провайдера из HKLM\Software\ODBC\ODBC Data Sources\\<DSN Name>.

Если вы можете использовать провайдера OLEDB для ODBC, то вы можете использовать трюк UDL и заставить его также построить строку соединения из DSN файла ODBC. Строка подключения ODBC будет в расширенных свойствах UDL.

4 голосов
/ 17 июня 2009

Если вы создали DSN, то DSN будет ConnectionString!

Вы можете просто использовать DSN=<YourDSNName> и передать его объекту OdbcConnection.

Например, используя C #:

string dsnName = "DSN=MyDSN";
using (OdbcConnection conn = new OdbcConnection(dsnName))
{
  conn.Open();
}

Также вы можете использовать класс OdbcConnectionStringBuilder и установить его свойство DSN.

3 голосов
/ 22 ноября 2013

Чтобы расширить ответ Марка Брэкетта о реестре: для 32-битного ODBC в 64-битной Windows путь реестра - HKLM \ Software \ Wow6432Node \ ODBC \ ODBC.INI \

1 голос
/ 01 ноября 2017

В моем случае было достаточно:

  • Удалить заголовок
  • Заменить все новые строки точкой с запятой
  • Использование фигурных скобок в качестве разделителя групп

Вот мой DSN-файл, созданный администратором источника данных ODBC (3-я вкладка - DSN-файл)

[ODBC]
DRIVER=MySQL ODBC 5.3 ANSI Driver
UID=MyUserName
PORT=3306
DATABASE=mydatabasename
SERVER=localhost

И вот как выглядела моя строка подключения:

DRIVER={MySQL ODBC 5.3 ANSI Driver};UID=MyUserName;PORT=3306;DATABASE=mydatabasename;SERVER=localhost
...