首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Delphi XE专业IDE中访问数据库?

如何从Delphi XE专业IDE中访问数据库?
EN

Stack Overflow用户
提问于 2011-04-23 16:30:50
回答 4查看 15K关注 0票数 4

我不能从中访问任何数据库。我所说的访问数据库的意思是:

具有活动数据库的

  1. 通过对象检查器中的组件出现,当使用数据资源管理器创建和探索数据库连接

将连接属性设置为真正的

编辑:

排序了!!

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

混淆和掩盖子问题是:

数据资源管理器不完全支持drivers.

  • There
  1. Chee-Yang Chau在编写dbxFirebird驱动程序时发现的,这限制了驱动程序的静态链接。不知道此bug是否扩展到2010年或XE.
  2. 时,使用对象检查器时,很容易导致IDE将更改的连接参数还原为默认值。
  3. 有些驱动程序的默认值不正确(例如假定客户端dll总是gdb32.dll,而不管数据库是Interbase还是两个版本的Interbase的
  4. ,都会导致数据库通信中的一些冲突-由这些工具生成的服务器名称是奇怪的;数据库的视图取决于使用了哪种Interbase工具。
  5. ,可用文档的日期不同;指的是不同的版本,因此经常出现contradictory.

结束编辑:

尝试了以下方法:

通过其他外部工具(如IBSQL和Flame databases

  • Multiple Robin.

  • 的支持论坛上提出问题,为Firebird、Embarcardo和FlameRobin.

提供支持论坛的问题。

环境:

64bit:

  • Delphi

  • 操作系统: Windows 7终极Embarcadero RAD专业版15.0.3953.35171
  1. Database: W1-V2.5.0.26074火鸟2.5 (64位)
  2. 连接技术: dbExpress
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-28 22:06:26

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

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

代码语言:javascript
复制
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.

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

的诀窍是选择一个ConnectionName值,然后将一个值分配给Driver属性和所有其他属性,如LibraryName、VendorLib和GetDriverFunc。

然后,如果需要,对Driver属性的子属性进行更改,最后清除Driver属性的名称。

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

注意:保留ConnectionName设置--如果清除该设置,参数将再次清除。

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

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

票数 2
EN

Stack Overflow用户

发布于 2011-04-26 13:34:43

不支持随Delphi附带的本地dbExpress驱动程序的Firebird。为了让本地firebird dbExpress驱动程序工作,您需要Delphi的企业或架构师版本。

我有德尔菲2010专业。我不想花额外的钱在E或A版本,我没有阅读功能矩阵,以看到火鸟dbExpress驱动程序是不可用的专业版。

我发现了一些非常好的视频,这些视频展示了如何使用Delphi连接到Firebird。然而,当我试图跟随我的教授版本时,没有什么效果。

为我感到羞耻,对Embarcadero更丢脸,因为它吹嘘Delphi支持大字体的Firebird,但没有提到您需要企业版或架构师版本,只有微小的细微之处除外。

票数 3
EN

Stack Overflow用户

发布于 2011-04-23 19:19:30

悬赏奖

我已经授予了这个答案的赏金,因为它使我不去调查IDE、它的安装和配置,而是对数据库中的连接进行调查。

DK关于火鸟64位- -no的经验.但是我在dbExpress上一直有很多麻烦。包含的IB组件套件没有任何问题。但对IB版本有很多混淆..。

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

http://www.ibprovider.com/eng/ --正如其他人所说,避免使用本地主机,使用127.0.0.1,或者更好的是,确定工作站的真实IP地址(ping机器名称.)您确定您没有可能涉及到某种防火墙或入侵保护吗?

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

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

再一次,国际海事组织追求ADO,你将永远不会回头。

HTH,MNG

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5765424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档