C应用程序libmysqlclient与ODBC

C应用程序libmysqlclient与ODBC,mysql,c,odbc,Mysql,C,Odbc,我正在编写一个需要与MySQL数据库接口的应用程序。我应该使用libmysql还是ODBC连接器?除了使用ODBC允许我在将来更改数据库而不需要太多代码更改之外,还有什么优点/缺点吗?在我看来,这是个人偏好的问题 在使用libmysql时,一个好的方法是首先编写一组通用libmysqlclient包装函数(层a),在这组函数之上是一组实现将在程序中使用的数据库功能的函数(层B),在实际程序之上是一组函数(层C) 从libmysql切换到ODBC只需要对层B做一些小的更改,而不需要修改层B的API

我正在编写一个需要与MySQL数据库接口的应用程序。我应该使用libmysql还是ODBC连接器?除了使用ODBC允许我在将来更改数据库而不需要太多代码更改之外,还有什么优点/缺点吗?

在我看来,这是个人偏好的问题

在使用libmysql时,一个好的方法是首先编写一组通用libmysqlclient包装函数(层a),在这组函数之上是一组实现将在程序中使用的数据库功能的函数(层B),在实际程序之上是一组函数(层C)

从libmysql切换到ODBC只需要对层B做一些小的更改,而不需要修改层B的API。因此,如果您打算将程序仅用于MySQL,我建议您坚持使用libmysql,直到有人为您提供ODBC补丁



在技术方面,您必须在数据库连接和可移植性之间进行权衡。使用libmysql,您的代码可以在各种平台(如Unix、MacOS和Windows)上编译而无需修改。ODBC库通常是为Windows或Unix/MacOS编写的。

我一直在更改我的数据库,并且我使用C连接器,它可以完美地工作,并且没有太多代码更改。这对我来说是更好的选择,也许对你来说也是更好的选择(当然只有在我看来)

如果你坚持使用MySQL,我不敢相信这两个接口之间的代码更改会有很大的不同


编辑:我最初选择C连接器是因为它对我来说直观自然;而且因为我不太确定Linux是否有一个工作的、加固的ODBC:我的代码必须在Windows和Linux下运行。现在我看到确实有这样一件事。这使得ODBC更具吸引力:如果我知道的话,也许我会选择不同的方式。

根据维基百科,ODBC是Windows操作系统不可或缺的一部分。WTF?@Philip,那么你是说为了便于移植,我们应该使用ODBC或libmysql吗?@Pacerier:我是说,如果你打算使用MySQL(或MariaDB),你应该坚持使用libmysql和上述体系结构。如果以后觉得需要支持其他数据库系统,可以轻松切换到ODBC。请注意,ODBC仅支持其支持的数据库系统的公共子集。对于简单的语句,这就足够了。对于细粒度控制,如各种锁定机制,ODBC将不起作用。+1从实际使用它的人那里听到消息总是很好的。