2017-07-19 29 views
0

環顧四周,用與QSqlTableModel,讓所有行了一個表的方式是與QSqlTableModel fetchMore()瘋狂低效

select(); 
while(canFetchMore()) { 
    fetchMore(); 
} 

的第一選擇似乎很好,但fetchMore()似乎搶單一次排。我正在錘鍊Sql服務器,並且約350行的讀取花費了幾秒鐘的時間,更不用說浪費了一堆CPU。

數據庫是SQL-Server。有沒有更好的辦法?

+0

取更多應與分頁使用,而不是下載整個表。你應該顯示第一頁,並把一個按鈕觸發獲取更多... –

+0

我需要整個表 - 它不一定是顯示...我必須比較表。看起來像QSqlQueryModel會更好。 –

回答

0

編輯:經過一些挖掘和從DBA的幫助,我可以證實,我從兩個不同的數據庫中獲得不同的行爲。不幸的是,它們是相同版本的SQL Server,並且兩者都使用Linux上的ODBC驅動程序(由Microsoft編寫)。在表單下,將選擇256行,然後fetchMore()的每次迭代將選擇另外256行。對於另一個,select()和fetchMore()一次只會得到一行,並且會導致各種問題。

不幸的是,我的解決方案是將QSqlQuery傳遞給QSqlDatabase。