1. 程式人生 > >java中關於報列表中的最大表達式數為1000的錯誤處理

java中關於報列表中的最大表達式數為1000的錯誤處理

java中關於報列表中的最大表達式數為 1000的錯誤,這是由於in裡面的數長度超過1000,這時可以通過兩種方法來解決:
1、在SQL語句把in裡面的數通過查詢表中的某個欄位的值,如果某個欄位裡面的數是a,b,c這樣的數,可以通過instr方法變成'a','b','c'
2、把in語句單獨拿出來,對in裡面的數進行加OR查詢,到999時進行加or,例如
            String OAper=user.getOApermissions();
            String sqlstring="";
            if (OAper.length()>1000) {
                StringBuffer sqlString = new StringBuffer();
                for (int i = 0; i <apermissionsList.size(); i++) {  
                
                               if (i == (apermissionsList.size())) {  
                                   sqlString.append(apermissionsList.get(i)-1).append("')"); //i的長度等於list的長度
                               }else if (i==0) {
                                   sqlString.append("OLineno in ('").append(apermissionsList.get(i)).append("','");
                            }
                               else if((i%999)==0 && i>0){  
                                   sqlString.append(apermissionsList.get(i)).append("') or OLineno in ('"); //i能被999整除時
                               }else{  
                                   sqlString.append(apermissionsList.get(i)).append("','");  
                               }  
                           }
                 sqlstring=sqlString.toString();
            }
通過判斷大於1000,就進行分割,上面in裡面的數OAper為string型別,apermissionsList是in裡面的數為list型別。