ODBC v Libpq:PostgreSQL的C库

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

还有,还有其他任何可能比ODBC / Libpq更好的库。

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

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

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

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

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

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

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

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

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