【问题标题】:Is it possible to create databases programmatically using DBX?是否可以使用 DBX 以编程方式创建数据库?
【发布时间】:2008-12-30 12:03:47
【问题描述】:

看起来 TSQLConnection 只连接到现有数据库,我找不到另一个允许我向数据库服务器发送命令的组件。

我将 Delphi 2009 与 Firebird 和 MSSQL 一起使用。

一个想法是连接到系统数据库(例如 MSSQL 中的 master 或 tempdb),然后将创建命令发送到服务器。这可能是 MSSQL 的一个选项,但我不确定 Firebird。

我也知道 Delphi 2009 中的新 DBX 元数据,但我找不到使用它创建数据库的方法。我发现的所有示例都是修改现有数据库。

【问题讨论】:

  • 无论您使用什么框架,您都可以通过向关系数据库服务器发送纯文本 DDL 指令来在关系数据库服务器上创建数据库。它适用于 MSSQL,也适用于 Firebird

标签: sql-server delphi firebird dbexpress dbx


【解决方案1】:

是的,你可以。 dbExpress 现在包含一组功能强大的元数据类来实现这一点。

Steve Shaughnessy 做了一个很好的介绍here

【讨论】:

  • 我知道新的 DBX 元数据,但无法使用它创建数据库。至少我找不到。如果你能给我一个例子。我所能做的就是修改现有的数据库。
【解决方案2】:

Erick,如果您使用 Devart 驱动程序,您可以在不使用 databasename 参数的情况下进行连接并发送 t-sql create database 命令。

【讨论】:

    【解决方案3】:

    Delphi 中包含的dbExpress 使用“最小公分母”策略。通过本机驱动程序提供的查询统计信息等信息在 dbExpress 中是不可见的。 (也许我应该问一个问题,比如“替代 dbExpress 实现中的哪个特性让你切换了?”)

    【讨论】:

      【解决方案4】:

      您可以使用标准 TSQLQuery 在两个数据库上执行“CREATE DATABASE ...”。

      请注意,这两者的语法不同。由于 dbx 是轻量级库,因此可能永远不会完全支持此 SQL 和 DB 特定操作。它给你留下了 SQL。

      【讨论】:

      • TSQLQuery 数据库需要连接的 TSQLConnection。
      • 是的。 SQLServer:连接到主数据库,创建新数据库,然后连接到它。
      【解决方案5】:

      Delphi 2007/2009 附带 DBX4。您可以使用那里的低级结构以编程方式创建数据库。看dbxcommons.pas

      【讨论】:

      • 您在谈论 DBX 元数据。看看我对尼克霍奇斯答案的评论。
      【解决方案6】:

      只要遵循特定的服务器 DDL 语法,您就可以通过在任何服务器(甚至是 ms-access 文件)上打开的任何连接(ADO、OLEDB、ODBC 等)发送“CREATE DATABASE”脚本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-13
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        相关资源
        最近更新 更多