MySQL:C ++ Connector vs ODBC

时间:2013-09-11 18:40:43

标签: c++ mysql unixodbc

我打算开始一个基于Web的项目,我正计划将MySQL作为数据库后端。我的服务器端编程语言是C ++。我以前用过unixodbc。由于我正在开始一个新项目,我想检查是否继续使用odbc或尝试使用不同的连接器。我知道使用odbc将提供RDBMS之间的可移植性。我真的不关心它,因为如果我切换,我将切换到cassandra或mongodb。

我对C ++连接库的要求:

  1. 如果在大型数据集上表现良好,我预计MySQL数据会变得更大。
  2. 我期待大量的传入连接,所以希望我的服务器能打开更多的MySQL连接。
  3. 表现更重要。
  4. 连接池。
  5. 功能集与ODBC。
  6. 我只计划Linux / Unix环境,最好是CentOS / FreeBSD。请帮我选择一个从c ++连接到mysql的好方法。

2 个答案:

答案 0 :(得分:1)

Qt库在QtSql模块中有一个很好的SQL支持。 QtSql模块具有非常好的文档,良好的面向对象的API,不同的数据库后端支持(MySQL,ODBC通过unixODBC,PostgreSQL,ORACLE)。您不需要使用Qt GUI功能来使用QtSql模块。

答案 1 :(得分:1)

我喜欢SOCI库。 http://soci.sourceforge.net/

它有一个独特的EDSL(嵌入式域特定语言),它构建表达式树来编译查询并填充对象,而不是通过新(变体)类型发送的纯SQL查询,让你找到如何解决正确转换它们。

它轻量级,适应您的对象,非常直观,连接到任何类型的数据库,以防您想要更改,甚至支持存储过程。一段时间后它肯定很方便,但是对于你可能习惯的东西有一点点学习曲线。

代码示例:

{

    session sql(mysql, "db=test user=root password='Ala ma kota'");

    boost::tuple<string, boost::optional<string>, int> person;

    sql << "select name, phone, salary from persons where ...",
        into(person);

    if (person.get<1>().is_initialized())
    {
        // the given person has a phone number
    }
    else
    {
        // this person does not have a phone number
    }

} // session closed at scope end