Vista x64, разработка гаджетов, ошибка OLEDB: «поставщик не найден» - PullRequest
1 голос
/ 04 мая 2009

Я занимаюсь разработкой гаджета для Vista. Гаджет работает с локальной базой данных .mdb, используемой OLEDB. Код следующий:

var cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + getDbFilePath() + ";Persist Security Info=False;";
var connection = new ActiveXObject("ADODB.Connection");
connection.ConnectionString = cs;

Он работает под Vista 32, но не работает под x64 с сообщением:

Провайдер не найден. Возможно, он неправильно установлен.

Когда я запускаю файл javascript из командной строки, ошибок не возникает. getDbFilePath () возвращает правильный путь, база данных существует и т. Д.

Как это исправить? Может быть, есть смысл использовать другой поставщик базы данных?

Спасибо

1 Ответ

0 голосов
/ 04 мая 2009

Нет собственного образа Jet, зарегистрированного / доступного для x64 - он доступен только в 32-битных процессах на x64. Исполняемый файл боковой панели запускается как собственный образ x64, поэтому он не работает.

Ваш выбор кажется ограниченным:

  1. Откажись от Джета, например переключиться на один из SQL Compact Edition, SQL Express или аналогичный
  2. Оберните ваши Jet-вызовы в суррогатный 32-битный COM-объект. Зарегистрируйте объект как вне процесса в 64-битном реестре. например,

    http://dnjonline.com/article.aspx?ID=jun07_access3264

  3. Нет поддержки x64

Попытка заставить боковую панель работать в 32-битном режиме кажется трудной / невозможной, не говоря уже о неразумной.

...