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



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

  1. 通过显示实时数据库组件在对象检查器,设置连接属性时真正的
  2. 使用数据资源管理器创建并探索数据库连接

编辑:
排序! !

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

混淆和掩盖子问题是:

    dll丢失或放错位置。
  1. 数据浏览器不完全支持dbExpress驱动程序。在2009年IDE代码中有一个bug,由Chee-Yang Chau在编写dbxFirebird驱动程序时发现,它限制了驱动程序到Delphi的静态链接。不知道这个bug是否会扩展到2010或XE。
  2. 当使用对象检查器时,很容易导致IDE将更改的连接参数恢复为默认值。
  3. 一些驱动程序有不正确的默认值(例如假设客户端dll始终是gdb32.dll,无论数据库是Interbase还是Firebird)。
  4. 安装两个版本的Interbase导致了数据库通信中的一些冲突——工具生成的服务器名称很奇怪;数据库的视图取决于使用的是哪种安装的Interbase工具。
  5. 可用的文件是不同日期的;指不同的版本;并因此经常出现矛盾。

END EDIT:

方法尝试:

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

  1. 操作系统:Windows 7 Ultimate 64bit:
  2. Delphi Embarcadero®RAD Studio XE Professional Version 15.0.3953.35171
  3. 数据库:W1-V2.5.0.26074 Firebird 2.5(64位)
  4. 连接技术:dbExpress

Delphi Professional不支持Firebird和Delphi自带的原生dbeexpress驱动程序。您需要Delphi的Enterprise或Architect版本才能使本机firebird dbeexpress驱动程序工作。

我有Delphi 2010 Professional。我不想在E版或A版上花额外的钱,我没有阅读功能矩阵,看到Firebird dbeexpress驱动程序不能在Pro版上使用。

我发现了一些非常好的视频,展示了如何使用Delphi连接到Firebird。然而,当我试图遵循我的专业版本没有工作。

为我感到羞耻,更为Embarcadero感到羞耻,因为他们用粗体字宣传Delphi支持Firebird,但除了小字外却没有提到您需要企业或架构版本。

我现在可以编写代码来访问IDE中的Firebird。我有(有限的,但足够的)访问IDE中的驱动程序。具体来说,驱动程序出现在Data Explorer中,可用于为SQLConnection (dbExpress组件)生成默认值。这些可以在对象检查器中访问和使用。下面引用的IDE错误的解决方案对于确保通信参数正确是必要的。在编写数据库代码时,必须在源代码中编译dbeexpress驱动程序。

下面的代码是建立和测试数据库连接所需的最小值,设置了最小参数:

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 FilesFirebirdFirebird_2_5examplesempbuildemployee.fdb');
      Open;
      If Connected then ShowMessage('Connection is active');
      Free;
    end;
  end.

由Bob Swart在Codegear论坛上提供的解决方案是:

技巧是选择aConnectionName值,然后将给Driver属性赋一个值还有其他属性LibraryName、VendorLib和GetDriverFunc .

然后,如果需要的话,对驱动的子属性属性,最后清除名称

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

注意:将ConnectionName设置为-如果你清除了这个,参数将再次被清除

现在可以编译应用程序了并部署它,而不需要Dbxdrivers.exe或dbxconnections.ini(但是您需要部署dll在LibraryName中指定(当然是VendorLib)。

还要确保将LoginPrompt设置为False并留下LoadParamsOnConnect设置为False

赏金奖

我把这个答案归功于它,因为它把我从对IDE的调查,它的安装和配置,转向了对数据库连接的调查。

DK关于火鸟64位-没有经验。但是我在使用dbeexpress时总是遇到很多麻烦。所包含的IB组件套件从未出现任何问题。但是IB版本有很多混淆…

但在我看来,你最好使用ADO ('DBGo')组件,而不是任何专有的IB或Delphi特定的驱动程序。您需要的是IB的ADO提供程序,可用@:

http://www.ibprovider.com/eng/—正如其他人所说,避免使用localhost,使用127.0.0.1,或者更好的是,确定工作站的真实IP地址(ping machine-name…)你确定你没有安装防火墙或入侵保护系统吗?

你还需要确保你的IB连接配置正确-本地或TCP,不,不要使用引号为你的名字,pwrds等。你得到的错误信息似乎表明你试图通过TCP连接,它没有正确配置。在它起作用和不起作用之间发生了什么?关闭德尔福?重启机器?请解释…

不需要"特殊权限"-你只需要确保你的数据库服务器和客户端正确安装和配置。在功能方面,你可以用专业版做任何事情——只是驱动程序等不包括在包中。

再一次,我要去ADO,你永远不会回头。

HTH,西班牙芒果

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

如果我没记错的话,至少从Delphi 3开始,"专业"版本和"高级"版本之间的区别因素就是数据库开发的"开箱"类型。

  • 在Delphi 1中,BDE是唯一的方法来进行开箱即用的数据库开发。
  • Delphi 2通过抽象数据库组件层次结构的部分允许自定义数据库层。
  • Delphi 3 Professional为基于文件的数据库和Interbase提供了BDE和驱动程序。
  • 上一级(企业?*)他们为典型的客户端-服务器数据库访问提供了BDE驱动程序:SQL Server, Sybase, Interbase, Oracle,…(以及Interbase的本地驱动程序)
  • 另一个级别(建筑师?*)引入了Midas的多层开发。不幸的是,Borland在使用Midas时后退了一步,因为多层组件再次硬连接到BDE。(在Delphi 4中解决了这个问题)

?* 请注意,我可能搞错了这些版本的确切名称。大约在那个时候,我形成了一种观点,认为Borland只是想出了一些"更宏大"的名字,目的是为了收取更多的费用,而这些功能并没有真正提供"大支票"的首席信息官们所相信的那样多的好处——让开发人员去处理后果。(是的,我有迈达斯一号的战斗伤疤)

除了

咆哮,理论是…

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

当然理论&Practice 很少去同一家酒吧。然而,通过一些提示,您应该能够开发一个重要的基于文件的解决方案,并且可以相对轻松地升级。

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

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

相关内容

  • 没有找到相关文章

最新更新