使用ODBC作爲傳輸層很方便,因爲您可以通過tcp輕鬆連接到遠程計算機。缺點是連接的所有往返行程。 在胖客戶端的啓動中,許多數據集都需要幾千行。這是在用戶完成事物#1之前需要的數據。使用ODBC返回SQL結果集作爲blob通過ODBC
我想要做的是創建一個單一的對象(blob也許)返回一個往返意味着濃縮結果集到一個表/ blob /對象,我可以解析出來後收到。
我可以想到一些醜陋的方法來做到這一點,優雅的東西會很棒。
使用ODBC作爲傳輸層很方便,因爲您可以通過tcp輕鬆連接到遠程計算機。缺點是連接的所有往返行程。 在胖客戶端的啓動中,許多數據集都需要幾千行。這是在用戶完成事物#1之前需要的數據。使用ODBC返回SQL結果集作爲blob通過ODBC
我想要做的是創建一個單一的對象(blob也許)返回一個往返意味着濃縮結果集到一個表/ blob /對象,我可以解析出來後收到。
我可以想到一些醜陋的方法來做到這一點,優雅的東西會很棒。
假設你的意思是SQL Server。如果使用正向遊標,則每個SQLFetch都不需要往返服務器。如果您發現需要很長時間才能完成此任務,則可能需要查看您是如何調用ODBC API的。通常,從僅向前遊標的提取將受到網絡吞吐速度的限制,並且所需的唯一往返行程將爲TCP確認。
嗯,我可以使用SQLFetchScroll()來檢索很多行,但是我想知道使用某些服務器端智能的壓縮方法。 –
我認爲這一切都取決於你如何編寫你的C++程序。如果你使用類似CRecordSet的東西,那麼是的,會有數千次往返。但是,如果您知道自己在做什麼後(例如,從table1中選擇col1),那麼您可以使用最少的一組ODBC API來執行此操作,並且庫不會執行任何不必要的調用 – cha
使用任何語言的ODBC,調用Execute )之後是多次調用Fetch(在循環中),每行調用一次。問題是關於打包數據以避免這種情況。 –
您可以增加行集大小,以便SQLFetch()一次檢索多行。你的代碼是什麼? – cha