2012-01-05 3 views
0

dbf 파일이있어서 sybase 데이터베이스를 업데이트해야합니다. dbf 파일의 모든 레코드를 singel 맵에 넣었습니다. 맵의 첫 번째 인수는 데이터뱅크에 설정할 값이고 두 번째 위치는 조건 (이 경우 Memo)입니다. sybase 데이터베이스를 어떻게 업데이트 할 수 있습니까?sybase 데이터베이스를 한 번 업데이트 하시겠습니까?

public static void updateBcHeader(Map<String,String> list){ 
    String query = "update BcHeader\n" + 
      "set Label='poika' \n" + 
      "where Memo like 'A'"; 


} 

답변

-1

이것은 내 프로젝트에서 테스트 한 올바른 코드입니다.

 PreparedStatement stmt; 
    try { 
     stmt = con.prepareStatement("update BcHeader set Label = ? where memo like ?"); 
     for (Map.Entry<String, String> entry : list.entrySet()) { 
     stmt.setString(1, entry.getKey()); 
     stmt.setTimestamp(2, new Timestamp(new Date().getTime()), Calendar.getInstance()); 
     stmt.setString(3, entry.getValue()); 
     stmt.executeUpdate(); 
    } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
+2

SQLException을 무시하면 안됩니다. 그리고 진술은 마침내 차단되어야합니다. 그리고이 코드는 작동하지 않을 수도 있습니다. 당신은 3 개의 매개 변수를 바인딩하고 있으며 쿼리는 2 개 밖에 없습니다. 그리고 타임 스탬프와 같은 것을 사용하는 것은 말이되지 않습니다. 자신의 질문에 대답하고 자신의 대답을 수락하면, 적어도 그것을 수정하십시오. –

3

루프 맵 항목을 통해 각 항목에 대한 업데이트 문을 실행할 :지도 정말 이러한 인수를 저장하는 나쁜 선택이라고

PreparedStatement stmt = 
    connection.prepareQuery("update BcHeader set Label = ? where Memo like ?"); 
for (Map.Entry<String, String> entrySet : list.entries()) { 
    stmt.setString(1, entry.getKey()); 
    stmt.setString(2, entry.getValue()); 
    stmt.executeUpdate(); 
} 

참고. where 절에 여러 값을 설정하거나 여러 요소가 있다면 어떨까요? 여러 개의 메모가 같은 라벨을 공유한다면 어떨까요? List<Change>을 사용해야합니다. 여기서 Changelabelmemo 필드를 갖는 개체입니다.

+0

그냥 작은 수정 : '의 PreparedStatement stmt를; \t { \t \t stmt = con.prepareStatement ("BcHeader 설정 Label =? 여기서 메모는?"); \t \t (Map.Entry 항목 : list.entrySet()) { \t \t stmt.setString (1, entry.getKey()); \t \t \t stmt.setTimestamp (2, 새 Timestamp (새 날짜(). getTime()), Calendar.getInstance()); \t \t stmt.setString (3, entry.getValue()); \t \t stmt.executeUpdate(); \t} \t} catch (SQLException e) { \t \t e.printStackTrace(); \t} ' – itro

+0

독자의 연습 문제로 예외 처리를 남겼습니다. 당신이 제안하는 것처럼 예외를 무시하는 것은 나쁜 생각입니다. –

관련 문제