ODBC v Libpq:PostgreSQL的C库

时间:2016-03-22 02:07:43

标签: c postgresql odbc libpq

我将使用C库连接和使用PostgreSQL数据库,我想知道ODBC和Libpq的优缺点是什么。据我所知,libpq似乎更快,但我无法获得任何明确的答案或基准。

此外,还有其他库可能比ODBC / Libpq更好。

2 个答案:

答案 0 :(得分:3)

如果您想要一个为不同数据库使用类似API的标准适配器,则ODBC非常有用。我个人认为它是一个糟糕的API,但它被广泛理解并且有很好的文档记录。

libpq更直接地与PostgreSQL交谈。您可以使用它获得更好的性能,但可能还不够,以至于它会对大多数应用程序产生任何影响,这些应用程序会花费时间在查询执行,网络延迟等方面,而不是在客户端库中。

较新版本的psqlODBC构建于libpq上,并作为libpq的ODBC包装器。

还有libdbi,它提供了比ODBC更可怕的API。

为了完整性,还有服务器后端SPI,可以由用C编写并加载到PostgreSQL服务器中的用户定义函数使用。它在服务器扩展和功能之外没用。

哦,还有那个ecpg。不要使用ecpg。它是一种超级遗留的语言集成SQL工具,主要用于从某些其他数据库引擎中轻松移植。不要使用ecpg。真。

对于C ++,有QtSQL接口(不同寻常的Qt,它非常糟糕且非常有限,不能使用它)和libpq ++(好但很大程度上没有维护)。

我个人直接编写libpq代码,但那是因为我正在研究通常会自己进入PostgreSQL的代码。如果您无法想象除PostgreSQL之外的任何目标,您可能想要编写libpq代码;否则可能使用ODBC与psqlODBC。

答案 1 :(得分:1)

ODBC通用的主要是MS Windows数据库访问接口。 Libpq是本机PostgreSQL客户端接口。如果您不需要通用接口,请不要使用ODBC。它是老式的不友好设计的图书馆,高度复杂。 libpq没有任何优势。