2010-11-29 3 views
0

사용자가 사용자 지정 SQL 쿼리를 만들 수있는 응용 프로그램을 작성 중입니다.형식이없는 Java 출력 배열

제가

for(JTextField field : fields){ 
if (!field.getText().equals("")){ 
    rows.add(field.getText()); 
} 
} 

를 사용하여 어레이 각각 JTextFields에서 falue를 추가 할 때 출력이 대괄호 나 쿼리 스트링으로 배열 inser 그래서

[arVal1, arVal2, etc, etc] 

에 싸여 배열 그것은 다음과 같습니다 :

INSERT INTO table ([arval1, arval2, arVal3]) VALUES ([bla, bla, bla]) 

내가 어떤 이유로 쿼리를 실행할 때 : ORA-009 28 : 누락 된 SELECT 키워드 오류; 하지만 쿼리의 기본 문자열이 다음과 같습니다.

INSERT INTO table (arval1, arval2, arVal3) VALUES (bla, bla, bla) 

잘 작동합니다.

임 없애 찾고 배열을 출력 할 때 []

당신에게 감사

답변

1

당신은 구아바를 (하지만 난 그것을하는 것이 좋습니다 :))

StringBuilder builder = new StringBuilder(); 
builder.add("INSERT INTO table ("); 
for(int i=0; i<rows.length: rows){ 
    builder.add(row); 
    if(i<rows.length -1){ 
     builder.add(",") 
    } 
} 
builder.add(") VALUES ("); 
.... 
사용할 수없는 경우

완료하려면 구아바를 사용하면 다음과 같이 표시됩니다.

Joiner commaJoiner = Joiner.on(", "); 
"INSERT INTO table (" + commaJoiner.join(rows) + " VALUES " + commaJoiner.join(values) 
+0

lib를 어떻게 가져 옵니까? import com.google.common.base.Joiner; 나던. – slex

+1

또한 클래스 패스에 구아바 항아리를 추가해야합니다. 이렇게하는 방법은 코드가 실행되는 컨텍스트에 따라 다릅니다. IDE에서 실행중인 경우 어딘가에 가져 오기 라이브러리 또는 라이브러리 관리 화면이 있어야합니다. –

2

당신은 배열의 toString 방법에 의존해서는 안됩니다. Guava를 사용

, Joiner.on(",").join(myArray);

+0

+1 guava (sooooo simple :)) –

0

어쩌면 지나치게 복잡한 솔루션을하려고 노력하지만, toString()를 재정의하려고

ArrayList<String> rows = new ArrayList<String>() 
    { 
     public String toString() 
     { 
      StringBuffer retVal = new StringBuffer(); 
      for(int i = 0; i < size(); i++) 
      { 
       retVal.append(this.get(i)); 
       if(i < size() - 1) 
       { 
        retVal.append(","); 
       } 
      } 
      return retVal.toString(); 
     } 
    }; 
+0

- 아무런 설명이 없으면 StringBuffer 대신 StringBuilder를 사용하십시오. toString 메서드를 재정의하는 것이 아니라리스트를 반복하는 것이 더 좋습니다. –