Как мне перечислить установленных поставщиков OleDb для текущей архитектуры процессора? - PullRequest
0 голосов
/ 12 мая 2010

У меня есть проект, который подключается к файлу базы данных формата dBase, который я всегда делал в прошлом со строкой подключения в виде:

PROVIDER = Microsoft.Jet.OLEDB.4.0; Источник данных = MyData.dbf; Расширенные свойства = dBASE 5.0

Мне недавно пришлось вернуться к этому вопросу, и я обнаружил, что при попытке создать OleDbConnection с этой строкой подключения на компьютерах x64, на которых установлена ​​Office x86, возникает исключение.

Быстрый взлом исправления показывает, что принудительное нацеливание приложения на x86 только заставляет его работать, но я надеялся, что смогу привести в порядок это и заранее проверить, не сможет ли оно создать подключение, чтобы я мог настроить параметры импорта в соответствии с доступными поставщиками.

Можно ли перечислить доступных поставщиков данных для текущей архитектуры процессора ? (кроме как полагаться на перехват исключения - в конце концов, в Руководстве по проектированию платформы предлагается, чтобы вы только бросали только в исключительных обстоятельствах, и у вас есть метод, чтобы проверить, вызовет ли что-то исключение)

1 Ответ

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

Вы можете использовать класс OleDbEnumerator, чтобы узнать, какие поставщики доступны. Не уверен, в чем смысл, вы просто покажете пользователю пустой список вариантов. 64-битная версия JET-провайдера недоступна и альтернативы нет. Вы все равно получите звонок от пользователя с просьбой изменить программу. Если вы хотите поддерживать JET, вам нужно установить цель сборки на x86.

...