База данных Jet 32 ​​и 64 бит и альтернативы - PullRequest
3 голосов
/ 02 мая 2011

У нас есть приложение, использующее OLEDB и движок Jet, Microsoft.Jet.OLEDB.4.0. Мы конвертируем наше приложение для работы в 64-битном режиме. Однако ядро ​​базы данных больше не является стандартной частью 64-битной Windows. Но 64-разрядная версия Office 2010 устанавливает 64-разрядное ядро ​​базы данных (см. http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en), чтобы вы могли использовать Microsoft.ACE.OLEDB.12.0.

Поэтому я работаю над устранением проблем, чтобы наше приложение также работало в 64-битном режиме. Но код OLEDB жалуется на то, что ядро ​​базы данных не зарегистрировано. Поэтому я пытаюсь установить распространяемый 64-битный движок по ссылке выше. Но он говорит мне, что мне нужно сначала удалить 32-битный Office 2007. Я не собираюсь этого делать, потому что я уверен, что некоторые настройки и т. Д. Будут потеряны.

Итак, мои вопросы: Почему 32-битные компоненты доступа к базе данных не работают в 64-битном режиме, но вы не можете установить 64-битный, если 32-битный уже установлен? Имеет ли это какое-либо значение для кого-либо вообще?!

Я понимаю, что Microsoft хочет, чтобы люди переключились на SQL-сервер Express, за исключением того, что он слишком инвазивен, надежно устанавливается даже на чистых новых компьютерах с Windows 7 и не так просто копировать или перемещать данные между различными машинами. Есть ли подходящая альтернатива Jet тогда? Что-то простое, но работает на 32 и 64-битных и в идеале имеет поддержку OLEDB и ODBC? SQLite выглядит многообещающе, может быть?

1 Ответ

1 голос
/ 03 августа 2011

Только что сделал быстрый поиск, и, похоже, не существует множества альтернатив Access без перехода на SQL-сервер. Я нашел это, http://www.vistadb.net/,, что звучит круто, но лицензия разработчика довольно дорогая.

В качестве альтернативы вы все равно можете использовать Access без установки 64-битного драйвера. Это случилось со мной, пришлось читать из Access, но не удалось преобразовать приложение в 32-разрядную версию. Мой ответ состоял в том, чтобы написать отдельный исполняемый файл «прокси», который будет работать в 32-разрядной версии. Я запускал приложение, используя объект System.Diagnostics.Process, и связывался с ним через перенаправленный стандартный ввод и вывод, передавая строку подключения в качестве параметра командной строки. Класс DataTable имеет встроенные функции ReadXML и WriteXML, которые упрощают передачу данных следующим образом.

...