以可移植的方式使用 DB Api

Posted

技术标签:

【中文标题】以可移植的方式使用 DB Api【英文标题】:Using DB Api in a portable manner 【发布时间】:2010-01-08 21:08:35 【问题描述】:

我需要开发某种应用程序并在其中使用 DB。

假设我目前想在 Windows 上开发它,但是,几个月后我可能不得不将它迁移到 Linux。

我开始阅读一些关于它的内容,但无法找到我需要的内容。

是否有用于使用 DB 的通用/可移植/标准 api?

我读到有 ODBC、JDBC、iOBDC、unixODBC 吗?为什么所有这些都存在?

有人可以帮助我解决这个问题吗?

编辑 - 我正在使用 C++ - 所以请向那个方向提出建议,即使我会欣赏跨语言/跨平台的建议

【问题讨论】:

【参考方案1】:

有一堆用于通用数据库访问的 C++“包装器”库,这是我最想知道的:

SOCI - 现代 C++ 语法,积极开发,与 boost 配合得很好,支持多个后端 OTL - 仅标头(模板),非常轻量级

这两个都源于 Oracle 特定的工作,但现在至少支持几个其他数据库。 当然,您不能真正隐藏供应商差异,但这是一般law of leaky abstractions。

【讨论】:

【参考方案2】:

只需将JDBC API 与 JDBC 驱动程序结合使用。不要使用 ODBC(桥接)驱动程序。

【讨论】:

【参考方案3】:

如果您的数据库负载不是很重,我建议您使用SQLite。您只需要一个头文件和一个源文件(合并版本)。而且它非常便携。 我一直在 Windows 和 Linux 上使用它。

【讨论】:

以上是关于以可移植的方式使用 DB Api的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C 中以可移植的方式管理内存对齐和通用指针算法?

如何以可移植的方式在 C 中执行算术右移?

以可移植数据格式保存/加载 scipy sparse csr_matrix

如果我以可移植性为目标,我应该对具有负值的字符使用带符号的字符吗?

是否有一种可移植的方式在 Makefile 中制作可移植的可选依赖项?

是否使用 BYTE 可移植类型的变量?