使用sqlserver或其它資料庫時,有時候查詢條件過多的情況下會報如下類似的錯誤:
傳入的**格式資料流(tds)遠端過程呼叫(rpc)協議流不正確。此 rpc 請求中提供了過多的引數。最多應為 2100
這是由於查詢條件過多造成的,所以需要分割查詢條件,下面附上通用的方法:
/**
*分割查詢條件集合
*/private static list> splitlist(listlists,int limit)
int result=0;
for(int i=0;isize)
list.add(lists.sublist(i, result));
} return list;
}
資料庫sql的in操作,解決in的過多
乙個sql的拼寫後,伺服器會把這個sql傳送到資料庫伺服器執行,一般不在乙個物理機上。那麼傳送需要走網路,包丟失等網路情況就可能出現。一般情況,乙個sql的長度不會很大,但是有種這樣的情況。in操作時,這些資料 於外部,不好預估有多少。此時,最好不要貿然把所有字串都通過這乙個sql拼進去。此時這個s...
LINQ引數過多時的解決方案
在專案中曾有這樣的應用,許可權篩選時先組織出員工的id,然後使用linq在相應的表中查詢資料,條件是這些查詢出來的資料的id必須在剛才許可權篩選出來的id中,但是如果許可權中的id太多,就會出現問題 傳入的 格式資料流 tds 遠端過程呼叫 rpc 協議流不正確。此 rpc 請求中提供了過多的引數。...
LINQ引數過多時的解決方案
在專案中曾有這樣的應用,許可權篩選時先組織出員工的id,然後使用linq在相應的表中查詢資料,條件是這些查詢出來的資料的id必須在剛才許可權篩選出來的id中,但是如果許可權中的id太多,就會出現問題 傳入的 格式資料流 tds 遠端過程呼叫 rpc 協議流不正確。此 rpc 請求中提供了過多的引數。...