如何从Delphi XE Professional IDE中访问数据库?

时间:2011-04-23 16:30:50

标签: database delphi configuration firebird delphi-xe

我无法通过任何方式从Delphi XE Professional中访问任何数据库。访问数据库的意思是:

  1. 通过实时数据库显示 对象检查器中的组件, 何时设置connected属性 真的
  2. 使用数据资源管理器创建 并探索数据库连接
  3. 修改:
    SORTED !!

    核心问题是与数据库的通信,特别是IDE生成的通信以及使用驱动程序构建的任何代码都存在问题。

    混淆和屏蔽子问题是:

    1. 缺少或放错了DLL。
    2. 数据资源管理器不完全支持dbExpress驱动程序。
    3. 在编写dbxFirebird驱动程序时,Chee-Yang Chau找到了2009 IDE代码中的一个错误,该错误限制了驱动程序与Delphi的静态链接。目前尚不清楚这个bug是否延伸到2010或XE。
    4. 使用Object Inspector时,很容易使IDE将更改的连接参数恢复为默认值。
    5. 某些驱动程序的默认值不正确(例如,假设客户端dll始终为gdb32.dll,无论数据库是Interbase还是Firebird)。
    6. 安装两个版本的Interbase导致数据库通信中的一些冲突 - 工具生成的服务器名称是奇怪的;数据库的视图取决于使用了哪种Interbase工具的安装。
    7. 提供的文件具有不同的日期;指的是不同的版本;结果经常出现矛盾。
    8. 结束编辑:

      尝试了方法:

      1. 多个数据库
      2. 多个不同的驱动程序/组件
      3. 通过其他外部工具访问数据库,例如IBSQL和Flame Robin。
      4. 在SO上提出问题(herehere
      5. 在Firebird,Embarcardo和Flame Robin的支持论坛上提出问题。
      6. 环境:

        1. 操作系统:Windows 7旗舰版64位:
        2. DelphiEmbarcadero®RADStudio XE专业版15.0.3953.35171
        3. 数据库:W1-V2.5.0.26074 Firebird 2.5(64位)
        4. 连接技术:dbExpress

4 个答案:

答案 0 :(得分:3)

Delphi Professional不支持使用Delphi附带的本机dbExpress驱动程序的Firebird。您需要Delphi的Enterprise或Architect版本才能使本机firebird dbExpress驱动程序正常工作。

我有Delphi 2010 Professional。我不想在E或A版本上花费额外的钱,但我没有阅读功能矩阵,因为Pro版本没有Firebird dbExpress驱动程序。

我找到了一些非常好的视频,展示了如何使用Delphi连接到Firebird。但是,当我尝试跟随我的专业版时,没有任何效果。

羞辱我并且更加羞辱Embarcadero因为大肆宣传Delphi支持Firebird的大胆打印,但没有提到你需要企业版或建筑师版,除非是小小的细则。

答案 1 :(得分:2)

BOUNTY AWARD

我已经将奖励授予了这个答案,因为它使我远离调查IDE,其安装和配置,以及调查与数据库的连接。

<强> END

DK关于Firebird 64位 - 没有经验。但是我一直在使用dbExpress遇到很多麻烦。包含IB组件套件从未出现任何问题。但IB版本存在很多混淆......

但IMO最适合使用ADO('DBGo')组件,而不是任何专有IB或Delphi特定驱动程序。您需要的是IB的ADO提供商,可从@:

获得

http://www.ibprovider.com/eng/ - 正如其他人所说的那样,避免使用localhost,使用127.0.0.1,或者更好,确定工作站的真实IP地址(ping机器名...)你确定你没有可能涉及的某种防火墙或内部保护?

您还需要确保您的IB连接配置正确 - 本地或TCP,不,请不要为您的姓名,pwrds等使用引号。您收到的错误消息似乎表明您正在尝试通过TCP进行连接,但未正确配置。它工作的时间和不工作的时间之间发生了什么?关闭德尔福?重启机器?请解释....

不需要“特殊权限” - 您只需确保正确安装和配置数据库服务器和客户端。在功能方面,您可以使用专业版进行所有操作 - 只是驱动程序等不包含在软件包中。

再次,IMO去寻找ADO,你永远不会回头。

HTH, MNG

答案 2 :(得分:2)

我现在可以编写代码来访问IDE中的Firebird。我有(限制但足够)访问IDE中的驱动程序。具体来说,驱动程序出现在数据资源管理器中,可用于生成SQLConnection(dbExpress组件)的默认值。可以在Object Inspector中访问和使用它们。下面引用的IDE错误的解决方法对于确保通信参数正确是必要的。编写数据库代码时,需要在dbExpress驱动程序的源代码中进行编译。

以下代码是建立和测试数据库连接所必需的最小参数集:

unit Unit2;
interface
uses Classes, SqlExpr, Dialogs, dbxDevartInterbase;
var SQLConnection1 : TSQLConnection;
implementation
{$R *.dfm}
  begin
    SQLConnection1 := TSQLConnection.Create(nil);
    with SQLConnection1 do
    begin
      ConnectionName := 'TestConnection';
      DriverName := 'DevartInterBase';
      LibraryName := 'dbexpida40.dll';
      VendorLib := 'fbclient.dll';
      GetDriverFunc := 'getSQLDriverInterBase';
      Params.Clear;
      Params.Add('User_Name=SYSDBA');
      Params.Add('Password=masterkey');
      Params.Add('Database=localhost:C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\employee.fdb');
      Open;
      If Connected then ShowMessage('Connection is active');
      Free;
    end;
  end.

#{3}}在Codegear论坛上提供的解决方法是:

  

诀窍是选择一个   ConnectionName值,然后将   为Driver属性赋值   以及所有其他属性   LibraryName,VendorLib和   GetDriverFunc。

     

然后,根据需要进行更改   驱动程序的子属性   属性,最后清除名称   驱动程序属性。

     

这将留下您的所有更改   Params列表(你也可以   如果你愿意,可以手动编辑。)

     

注意:保留ConnectionName集 -   如果你清楚那个参数   将被清除。

     

现在您可以编译您的应用程序了   并在不需要的情况下部署它   dbxdrivers.exe或dbxconnections.ini   (但您需要部署DLL   在LibraryName和。中指定   VendorLib,当然)。

     

还要确保将LoginPrompt设置为   False并离开LoadParamsOnConnect   设置为False。

答案 3 :(得分:1)

您是否通过Borland数据库引擎(BDE)和相关组件尝试了Paradox:TTable TQuery TStoredProc TDatabaseTSession

如果内存正确地为我服务,至少可以追溯到Delphi 3,“专业”版本和“更高级别”版本之间的区别因素就是“开箱即用”的数据库开发类型。

  • 在Delphi 1中,BDE是开展现成数据库开发的唯一方式。
  • Delphi 2通过抽象部分数据库组件层次结构来允许自定义数据库层。
  • Delphi 3 Professional为基于文件的数据库和Interbase提供了BDE和驱动程序。
  • 一级(Enterprise?*)他们为典型的客户端 - 服务器数据库访问提供了BDE驱动程序:SQL Server,Sybase,Interbase,Oracle,...(以及Interbase的本机驱动程序)< / LI>
  • 另一个级别(Architect?*)引入了与Midas的多层开发。不幸的是,Borland向Midas退了一步,因为多层组件再次硬接线到BDE。 (这在Delphi 4中得到了解决。)

?* 请注意,我可能会误解这些版本的确切命名。大约在那个时候,我形成了这样的观点,即Borland只是提出了“更宏大”的名字,以便为那些并没有真正提供与“重大支持 - 写作 - CIO们”相信的好处的功能收取更多费用 - 让开发人员处理后果。 (是的,我有来自Midas I的战斗伤痕。)

除此之外,理论是......

如果一个人开始入门级数据库开发,你会购买Delphi吗?专业的。通过 BDE ,针对基于文件的数据库 Interbase 开发您的系统。
如果您以后需要扩展:您将升级Delphi,购买您选择的SQL RDBMS,通过TDatabase组件切换连接,并应用一些必要的调整。
注意:在Delphi 3中,您可以切换到Native Interbase(个人不推荐)或使用第三方组件进行非Midas开发。从Delphi 4开始,ADO和DevExpress开始受到更多关注,而现在,BDE似乎已经被遗忘了。

当然理论&amp;练习很少频繁出现相同的酒吧。但是,通过一些警示性指针,您应该能够开发出一个基于文件的重要解决方案,可以相对轻松地进行升级。

  • 保持数据库的业务逻辑 out 。这很可能是最大和最常遇到的错误。大量系统通常用触发器和存储过程编写,这使得维护或迁移系统变得更加困难。
  • 避免使用特定于平台的数据库技术。这应该不言而喻,但如果你没有明确地注意它们,你将遇到问题。
    • 特别与基于文件的数据库系统相关,许多支持特殊的锁定机制 - 避免它们!在任何情况下,它们都无法很好地扩展到大型多用户系统。
    • 人工密钥的生成通常因平台而异:生成器,IDENTITY列,以及如何获得新值。
  • 规划系统以获取大量数据。识别高事务表,并避免使用不受控制的所有记录检索。在这种情况下我也会避免使用TTable - BDE使用TTable执行很多有趣的背景事务,并且行为可能因驱动程序和平台而异。

免责声明:所有这些都是很久以前的事了,所以有些细节可能有点粗略 免责声明2:我对Delphi XE没有任何专业经验。我目前专业使用D5,以我个人身份使用D2009。