MySQL:C++连接器与ODBC比较

4
我计划启动一个基于Web的项目,并且我打算使用MySQL作为数据库后端。我的服务器端编程语言是C ++。我以前使用过unixodbc。由于我正在启动一个新项目,我想检查是否应该继续使用odbc或尝试不同的连接器。我知道使用odbc将在关系型数据库之间提供可移植性。但如果我更换的话,我会转向cassandra或mongodb,所以我真的不太在意它。
我对C ++连接库的要求如下:
  • 应能很好地处理大型数据集,我预计MySQL数据将变得更加庞大。
  • 我希望可以处理大量的传入连接,所以希望我的服务器将打开更多的MySQL连接。
  • 性能更重要。
  • 连接池。
  • 功能集与ODBC相比。
我只计划用于Linux / Unix环境,最好是CentOS / FreeBSD。请帮助我选择一种从C ++连接到MySQL的良好方法。
2个回答

3

我喜欢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

2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接