我想问问那些在Firebird和IBPP(特别是后者)方面有经验的人。我找到了很多有关Firebird的正面文章,但在决定IBPP时遇到了问题。界面本身干净整洁,但似乎该项目没有进行很多事件(可能是因为它非常稳定)。

  • 您会为生产环境推荐IBPP吗?
  • 它是线程安全的吗?
  • 任何已知的错误吗?

  • 谢谢。

    最佳答案

    除了米兰提到的要点:

  • 当前,连接到不同的数据库时,无法使用多个客户端库,甚至无法指定将使用哪个客户端库。探测到了一定的客户端库位置的硬编码序列,找到的第一个序列将用于所有连接。 IBPP版本对此进行了修改已经很长时间了,但尚未发布。 SVN trunk包含一些用于处理此问题的代码,但我最多只能说这是alpha质量。
    所有这些仅适用于Windows,因为在所有其他平台上,Firebird客户端库无论如何都不会在运行时加载。
  • 该库不是线程安全的。在大多数情况下,这无关紧要,因为您应该让每个线程始终拥有自己的连接,事务和其他分类的对象。但是IBPP使用它自己的智能指针实现,该实现既不是完全异常安全的也不是线程安全的。不过,只要您从主线程初始化库(在创建任何其他线程之前)并在同一线程中创建和销毁IBPP对象(因此绝对不与其他线程共享对象!)在多个线程中使用IBPP应该可以工作美好的。
  • 如果您可以忍受以上几点(对您而言可能根本不重要),那么肯定可以将其用于生产。您可以随时更改遇到的事情,就像我们对FlameRobin所做的一样。
  • 关于c++ - 具有用于Firebird数据库的IBPP接口(interface)的经验,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2101449/

    10-12 23:56