Delphi:在没有 Ms Access 的情况下创建 Access DB (.mdb)

Posted

技术标签:

【中文标题】Delphi:在没有 Ms Access 的情况下创建 Access DB (.mdb)【英文标题】:Delphi: Creating Access DB (.mdb) without Ms Access 【发布时间】:2010-10-25 13:43:29 【问题描述】:

有没有办法在不实际使用 Ms Access 的情况下创建 Access 数据库 (.mdb)?我希望我的应用程序改为创建它(当用户按下工具栏上的“新文档”时)。

我正在使用 Delphi 5 Ent。

提前致谢! :-)

【问题讨论】:

【参考方案1】:

是的,如果您使用 ADOX 库,有一种方法。它是一个可以在 Delphi 中导入的 ActiveX 库。然后您可以使用以下代码创建一个新数据库。见here。

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;

【讨论】:

很高兴为您服务。如果您认为我的回答是您问题的正确答案,您可以将我的回答标记为已接受。这就是 *** 的工作原理。提前谢谢你。【参考方案2】:

它是这样完成的:

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 for DDL and Security”来获得它。

【讨论】:

感谢您的回答。我打算让我的应用程序成为共享软件。使用 ADOX 会如何影响部署?我还需要包含 ActiveX 库还是只包含 app.exe? 据我所知,ADOX 已经安装在 XP 及更高版本上,就像 ADO 一样。 Wikipedia 表示 MDAC 2.5 包含 ADOX,并从 Windows 2000 开始包含在 Windows 中。 我明白了。现在我知道。谢谢! :) 请注意,jet 驱动程序不支持 64 位应用程序,因此您只能使用 32 位应用程序。 现在对 Access 文件提供 64 位支持。我并不完全清楚 ACE 如何处理 MDB(关于 A2007/A2010 工作方式的一些事情表明 Access 将 Jet 4 用于 MDB,将 ACE 用于 ACCDB,但其他事情表明 ACE 可以同时处理两者),但是如果您需要编译对于 64 位,您应该尝试下载 64 位 ACE,它已在 MS 的网站上提供了很长一段时间。

以上是关于Delphi:在没有 Ms Access 的情况下创建 Access DB (.mdb)的主要内容,如果未能解决你的问题,请参考以下文章

MS Access Form:在没有键的情况下将新信息输入到两个链接表中

使用 Delphi 将文本文件加载到 MS ACCESS TABLE

写入 MS Access 数据库 (Delphi) 的问题

在 Delphi 中的不同数据库中的 MS Access 连接表

使用 ms access 2007 和 ado 部署 delphi 2010 以进行数据库连接所需的文件

带有 MS Access 2010 数据库的 Delphi FireDAC。为啥它将 ACE 转换为 Jet?