Ruby и accdb (мс доступ)

Если у меня есть базовая система Windows XP, файл ruby ​​и файл доступа MS Access (скажем, c:/foo/bar.accdb), какой наименее интрузивный метод для чтения этого файла .accdb.

  • Что нужно установить в системе xp.
  • Какова конкретная строка подключения.

Ответ 1

Что-то в этом направлении должно начаться. Конечно, вам нужно будет изменить некоторые значения, например; путь, имя файла, 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)

Ответ 3

Вы можете использовать ADO через библиотеку Ruby win32ole.

Подробные сведения и код можно найти здесь.

Ответ 4

Если вы можете использовать ADO, вы обнаружите, что библиотеки ADO уже установлены в окне Windows XP (в противном случае распространять MDAC). Тогда вам нужны только DLL ACE, а также его поставщик OLE DB, доступный бесплатно в Центре загрузки Microsoft:

Драйвер системы Office 2007: компоненты подключения данных

Ответ 6

Если Sequel и ADO не работают даже после добавления драйвера системы Office 2007: проверьте, используете ли вы 32-разрядную или 64-разрядную версию Ruby. Мне пришлось ударить мою версию до 32-битного, чтобы заставить вещи работать правильно.