Delphi: создание базы данных Access (.mdb) без Ms Access

Есть ли способ создать базы данных Access (.mdb) без фактического использования Ms Access? Я бы хотел, чтобы мое приложение создавало его вместо этого (когда пользователь нажимает «Новый документ» на панели инструментов).

Я использую Delphi 5 Ent.

Заранее спасибо! :-)


person AFF    schedule 25.10.2010    source источник


Ответы (2)


Да, есть способ, если вы используете библиотеку ADOX. Это библиотека ActiveX, которую вы можете импортировать в Delphi. Затем вы можете создать новую базу данных с помощью приведенного ниже кода. См. здесь.

procedure TForm1.btnNewDatabaseClick(Sender: TObject);
var
 DataSource : string;
 dbName     : string;
begin
 dbName:='c:\aboutdelphi.mdb';

 DataSource :=
    'Provider=Microsoft.Jet.OLEDB.4.0' +
    ';Data Source=' + dbName +
    ';Jet OLEDB:Engine Type=4';

  ADOXCatalog1.Create1(DataSource);
end;
person Lars Truijens    schedule 25.10.2010
comment
Рад помочь. Если вы считаете, что мой ответ является правильным ответом на ваш вопрос, вы можете отметить мой ответ как принятый. Так работает StackOverflow. Заранее спасибо. - person Lars Truijens; 10.11.2010

Вот как это делается:

procedure CreateNewDatabase;
var
  AdoxCatalog: Catalog;
begin
  AdoxCatalog := CoCatalog.Create;
  AdoxCatalog.Create(ConnectionString
    + 'Jet OLEDB:Engine Type='+IntToStr(Jet4x)+';');
end;

Вам понадобится ADOX_TLB, который вы можете получить, импортировав библиотеку типов «Microsoft ADO Ext. 2.8 для DDL и безопасности».

person himself    schedule 25.10.2010
comment
Спасибо за Ваш ответ. Я планирую сделать свое приложение условно-бесплатным. Как использование ADOX повлияет на развертывание? Нужно ли включать библиотеку ActiveX или только app.exe? - person AFF; 25.10.2010
comment
Насколько я знаю, ADOX уже установлен на XP и выше, как и ADO. Википедия говорит, что MDAC 2.5 включает ADOX и был включен в Windows, начиная с Windows 2000. - person himself; 25.10.2010
comment
Я понимаю. Теперь я знаю. Спасибо! :) - person AFF; 25.10.2010
comment
Имейте в виду, что драйвер реактивного самолета не поддерживает 64-битные приложения, поэтому вы будете ограничены 32-битными приложениями. - person skamradt; 25.10.2010
comment
Теперь есть 64-битная поддержка файлов Access. Я не совсем понимаю, как ACE обрабатывает MDB (некоторые аспекты работы A2007/A2010 предполагают, что Access использует Jet 4 для MDB и ACE для ACCDB, но другие вещи предполагают, что ACE обрабатывает и то, и другое), но если вам нужно скомпилировать для 64-битной версии вам следует попробовать загрузить 64-битную версию ACE, которая уже некоторое время доступна на веб-сайте MS. - person David-W-Fenton; 25.10.2010