2013-08-20 67 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