2013-12-13 4 views
0

동적 쿼리를 통해 행의 여러 열을 업데이트하려고합니다.업데이트 쿼리에 여러 열 추가

COLUMNNAMES 선택한 테이블

Arrays.toString (행) 로우가 업데이트되어야하는 사용자 입력을 포함 대해 모든 열 이름을 포함 ArrayList를이다.

임 실행하려고 할 때 열 이름에 다음 오류 메시지가 표시됩니다. 해당 열 [SNO, SNAME, STATUS, CITY]이 없습니다. 이 문제를 해결할 방법이 없습니까?

query = "UPDATE " + tablename + " SET '" + columnnames + "' = '" + Arrays.toString(row) + "' WHERE " + FirstColumn + " = '" + rowstandard + "'"; 

답변

1

각 열을 개별적으로 업데이트해야합니다. 각각을 배열로 전달할 수는 없습니다.

query = "UPDATE " + tablename + " SET " 
foreach(int i=0; i< columnnames.length; i++) 
{ 
    query+= "'" + columnnames[i] + "' = '" + row[i] + "'," 
} 
query = StripLastComma(query) //Not sure how to do this in Java. 
query +="' WHERE " + FirstColumn + " = '" + rowstandard + "'" 
+0

나는 마지막 쉼표를 제거하는 방법을 모르겠다. :/ – Looptech

+0

C#에서는 query = query.Substring (0, query.length-1)이됩니다. 자바에서도 마찬가지입니다. –

0
그게 전부가 세트에 대한 구문으로 작동하지 않을

이 설정되어 COLUMNA = ValueA, COLUMNB = VALUE (단위 : 십억) WHERE "+ FirstColumn +"= ' "+ rowstandard +"' ";

0

그것으로 업데이트 쿼리에 대한 올바른 구문을 지적되었다입니다 :

UPDATE [LOW_PRIORITY] [IGNORE] table_reference 
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... 
[WHERE where_condition] 
[ORDER BY ...] 
[LIMIT row_count] 

Update syntax를 참조

이 ( guava를 사용하여) 나는 이런 식으로 뭔가를 할 것이라고했다 가졌 :.

StringBuilder query = new StringBuilder(); 
query.append("UPDATE " + tablename + " SET "); 
// build a map of col name/value 
Map<String, String> map = Maps.toMap(columnnames, new Function<String, String>(){ 
     @Override 
     public String apply(String input){ 
      return row[columnnames.indexOf(input)].toString(); 
     } 
    }); 
query.append(Joiner.on(",").withKeyValueSeparator("=").join(map)); 
query.append(" WHERE " + FirstColumn + " = '" + rowstandard + "'"); 
query.toString(); 
+0

글쎄, 내 프로그램에 가장 좋은 방법으로 청구서 gregs 솔루션을 볼 수 있지만 내가 어떻게 그 마지막 쉼표를 제거 할 수 있을까요? 나는 그것을 인쇄 해 보았고 내 쿼리를 망치는 유일한 방법은 마침내 쉼표 – Looptech

+0

입니다. - 그런 문제는 없습니다.)하지만 마지막 쉼표를 제거하려면 다음과 같이 할 수 있습니다 :'query = query. substring (0, query.lastIndexOf (","));'query = StripLastComma (query) 대신에 추가해야합니다. –

+0

str이란 무엇입니까? 메신저에 오류가 발생했습니다. – Looptech