【问题标题】:C++ ODB Support Different DBMSC++ ODB 支持不同的 DBMS
【发布时间】:2013-10-28 07:59:54
【问题描述】:

我已经关注ODB ORM 一段时间了,并进行了一些练习。我的问题是在重新编译代码的不同 DBMS 之间切换。从我的 Java 背景来看,我可以简单地更改配置文件并且 ORM 可以工作,例如 Hibernate。到目前为止,我可以在 'odb-examples-2.2.0.tar.gz' 下编译 'hello' 示例并成功连接到 MySQL 和 PostgreSQL。

请分享您解决此问题的方法。代码示例也将非常有帮助。我想通过更改配置文件来简单地更改数据库。到目前为止,参考the manual 还没有帮助。我的系统需要跨平台。

谢谢。

【问题讨论】:

  • 示例here 似乎正是您所需要的。在示例中,他们使用命令行,但您可以解析自己的配置文件,然后创建适当的数据库指针。
  • @Nemikolh,我设法编译了 person.hxx(使用 -m dynami -d common),但无法制作驱动程序。提供的here 不完整。如果您有一些示例代码正在工作。请分享。我仍在努力解决这个问题。

标签: c++ orm odbc odb


【解决方案1】:

如果动态支持对您来说足够了,那么下面的example 就可以了。 在编译其他文件之前需要以下命令行:

odb --std c++11 --multi-database dynamic -d common -d mysql -d sqlite \
--generate-query --generate-schema person.hxx

在我的示例中,我使用的是手册中的命令行 (2.10)。根据我的阅读,当您使用 odb::query、odb::transaction 时,您无需执行任何其他特殊操作即可处理多个数据库。

【讨论】:

  • 我设法让我的应用程序按照我的意愿连接到多个数据库,尝试了很多次,但我做到了。由于某种原因,我无法及时做出回应。感谢您的帮助。
  • 旁注:在链接过程中必须包含生成的 person-odb-mysql.cxx 和 person-odb-sqlite.cxx 文件,而不仅仅是 person-odb.cxx,否则你会得到一个核心转储。如果您将这些生成的文件放入库中,则需要使用 -Wl,--whole-archive 标志来包含所有符号,否则您还会得到一个核心转储..
猜你喜欢
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多