2013-08-20 39 views
1

我要寻找一个C++库,提供了类似的功能的C#SelectQueryBuilder库C++ SQL查询建立图书馆

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 

回答

1

随着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(); 

http://qt-project.org/doc/qt-5.0/qtsql/qsqlquery.html#approaches-to-binding-values

+0

这看上去很适合我的需要。谢谢。 – oracle3001

+0

我忘了问是否可以嵌套查询/值,还动态添加绑定?即如果我想要“从table_1中选择[]”,其中[]将在运行时分配,并且是我想要选择的值列表? – oracle3001

+0

值绑定是在运行时完成的,我想你可以在for循环中使用addBindValue。如果你发布了一些代码,我可以进一步帮助你。 – headsvk