2017-12-14 1 views
0

arraylist를 SQL arraylist로 변환하는 오류를 수정하는 데 도움이 필요합니다. 내 코드에서 사용자의 선택한 값을 selectedRequests 목록에 저장하고 목록의 구성 요소를 검색하고 인쇄하기 위해 for 루프를 수행합니다. 그러나 검색된 값을 arraylist에 할당하는 데 어려움을 겪었으므로 list을 사용하기로 결정한 다음이 목록을 SQL arraylist로 전달했습니다.ArrayList를 SQL ArrayList로 변환하는 방법

내가 점점 오전 오류 :

은 java.sql.SQLException은 : 내부 표현으로 변환하는 데 실패 : [2015000015]은 java.sql.SQLException : 내부 표현으로 변환하는 데 실패 : 2015000015]에서 oracle.jdbc.oracore.OracleTypeNUMBER.toNUMBERArray oracle.jdbc.oracore.OracleTypeNUMBER.cArrayToNUMBERArray (OracleTypeNUMBER.java:452) (OracleTypeNUMBER.java:339)

에서 그리고 t를 참조하는 아래의 라인 O를 정확히 tranNoArrList에 :

ArrayDescriptor arrdescrTranNo = ArrayDescriptor.createDescriptor("HRD.LEV_ENCSEQ", con); 
       ARRAY tranNoArrTopass = new ARRAY(arrdescrTranNo, con, tranNoArrList); 

방법에있는 코드는 다음과 같습니다

String[] tranNoArr = new String[3]; 
List<String> tranNoArrList = new ArrayList<String>(); 
String[] apprStatusArr = new String[3]; 
List<String> apprStatusList = new ArrayList<String>(); 
String[] rejectionReasonArr = new String[3]; 
List<String> rejectionReasonArrList = new ArrayList<String>(); 
    for (PendingRequests p : selectedRequests) { 
      System.out.println(p.getRequestNo()); 
      System.out.println(p.getApprovalStatus()); 
      System.out.println(p.getRejectionReason()); 

      tranNoArrList.add(p.getRequestNo()); 
      apprStatusList.add(p.getApprovalStatus()); 
      rejectionReasonArrList.add(p.getRejectionReason()); 
        } 

      // tranno 
ArrayDescriptor arrdescrTranNo = ArrayDescriptor.createDescriptor("HRD.LEV_ENCSEQ", con); 
       ARRAY tranNoArrTopass = new ARRAY(arrdescrTranNo, con, tranNoArrList); 

      // ApprovalStatus 
ArrayDescriptor arrdescrApprStatus = ArrayDescriptor.createDescriptor("HRD.LEV_ACTIONFLG", con); 

ARRAY apprStatusArrTopass = new ARRAY(arrdescrApprStatus, con, apprStatusList); 
        //RejectionReason 
    ArrayDescriptor arrdescrRejectionReason = 
         ArrayDescriptor.createDescriptor("HRD.LEV_REJREASONTYP", con); 
    ARRAY rejectionReasonArrTopass = new ARRAY(arrdescrRejectionReason, con, rejectionReasonArrList); 

그래서 당신은 오라클 ARRAY 생성자로 배열을 취하는

답변

0

도와주세요 수 있습니다 그 세번째 인자는 List이 아니다.

ARRAY tranNoArrTopass = new ARRAY(arrdescrTranNo, con, tranNoArrList.toArray()); 

와 유사하게 다른 배열에 대한

ARRAY tranNoArrTopass = new ARRAY(arrdescrTranNo, con, tranNoArrList); 

를 교체합니다.

덧붙여, tranNoArrList이 숫자를 포함하는 표시로, tranNoArrListList<Integer> 또는 아마도 List<BigDecimal>보다는 List<String>를 정의하는 것이 좋습니다. 그렇지 않으면 "N/A"과 같은 숫자가 아닌 값이 거래 번호 목록에 있으면 오라클이 숫자로 변환하려고 시도 할 때 오류가 발생합니다. 물론 이것은 코드의 다른 부분에서 노크 변화가있을 수 있습니다. 예를 들어 PendingRequest.getRequestNo()의 유형을 숫자로 변경해야 할 수 있습니다.

+0

목록 대신 배열을 직접 사용하여 값을 배열에 추가 한 다음 Oracle 생성자로 전달할 수 있습니까? – user2438318

+0

@ user2438318 : 예, 가능합니다. –

관련 문제