Если у меня есть базовая система Windows XP, файл ruby и файл доступа MS Access (скажем, c:/foo/bar.accdb), какой наименее интрузивный метод для чтения этого файла .accdb.
- Что нужно установить в системе xp.
- Какова конкретная строка подключения.
Если у меня есть базовая система Windows XP, файл ruby и файл доступа MS Access (скажем, c:/foo/bar.accdb), какой наименее интрузивный метод для чтения этого файла .accdb.
Что-то в этом направлении должно начаться. Конечно, вам нужно будет изменить некоторые значения, например; путь, имя файла, SQLstatement и т.д.
Файл MDB (формат Access 2003 и старше) с использованием Jet engine
require 'win32ole'
connection = WIN32OLE.new('ADODB.Connection')
connection.Open('Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=c:\path\filename.mdb')
ACCDB файл (формат Access 2007 и более новый) с использованием механизма ACE
require 'win32ole'
connection = WIN32OLE.new('ADODB.Connection')
connection.Open('Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=c:\path\filename.accdb')
Чтобы выполнить SQL-запрос, который не возвращает данные, используйте:
connection.Execute("INSERT INTO Table VALUES ('Data1', 'Data2');")
Чтобы выполнить запрос, который возвращает набор записей:
recordset = WIN32OLE.new('ADODB.Recordset')
recordset.Open(SQLstatement, connection)
Вы можете использовать Sequel библиотеки Ruby (http://sequel.rubyforge.org/documentation.html), у нее есть адаптер ADO
Вы можете использовать ADO через библиотеку Ruby win32ole.
Подробные сведения и код можно найти здесь.
Если вы можете использовать ADO, вы обнаружите, что библиотеки ADO уже установлены в окне Windows XP (в противном случае распространять MDAC). Тогда вам нужны только DLL ACE, а также его поставщик OLE DB, доступный бесплатно в Центре загрузки Microsoft:
Как объясняет это сообщение в блоге (Ruby on Windows: использование Ruby и ADO для работы с базами данных MS Access, вы можете использовать ADO для подключитесь к базе данных MS Access 2007.
Если Sequel и ADO не работают даже после добавления драйвера системы Office 2007: проверьте, используете ли вы 32-разрядную или 64-разрядную версию Ruby. Мне пришлось ударить мою версию до 32-битного, чтобы заставить вещи работать правильно.