c++SQL查询构建库

c++ SQL Query Building Library

本文关键字:构建 查询 c++SQL      更新时间:2023-10-16

我正在寻找一个c++库,它提供与c#SelectQueryBuilder库类似的功能

http://www.codeproject.com/Articles/13419/SelectQueryBuilder-Building-complex-and-flexible-S

也就是说,它允许人们摆脱构建可怕的串联字符串以形成动态SQL查询的做法,而是拥有一个库,该库提供了一个接口,通过向它传递表、要从表中选择的元素等,然后它将SQL查询作为字符串返回。

任何帮助都非常感谢

编辑:我正在构建的示例查询。。。。直到运行时,我们才知道要选择的实际列,例如,不知道会有多少VAR1…VARx,以及它们到底是什么。

SELECT * FROM 
    (
        SELECT 
            table_1.id, 
            table_2.name, 
            (select(COALESCE(sum(table_1.col_1 * 1.0) / NULLIF(sum(table_1.col_2 - table_1.col_3),0) * 100,0))) as VAR1, 
            (select(COALESCE(sum(table_1.col_4 * 1.0) / NULLIF(sum(table_1.col_5),0) * 100,0))) as VAR2, 
            sum(table_1.col_2) as VAR3 
        FROM table_1, table_2 
        WHERE table_1.id = table_2.id 
        GROUP BY table_1.id, table_2.name 
    ) VARIABLES 
WHERE VAR3 > 1000

使用QSqlQuery,您可以使用占位符并将值绑定到它们:

QSqlQuery query;
query.prepare("INSERT INTO person (id, forename, surname) "
              "VALUES (:id, :forename, :surname)");
query.bindValue(":id", 1001);
query.bindValue(":forename", "Bart");
query.bindValue(":surname", "Simpson");
query.exec();

QSqlQuery query;
query.prepare("INSERT INTO person (id, forename, surname) "
              "VALUES (?, ?, ?)");
query.addBindValue(1001);
query.addBindValue("Bart");
query.addBindValue("Simpson");
query.exec();

http://qt-project.org/doc/qt-5.0/qtsql/qsqlquery.html#approaches-绑定值