Вопрос

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

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

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

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

Это было полезно?

Решение

Если вы можете использовать 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.

Другие советы

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

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

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

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

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

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

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

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

Вот мой файл 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top