2016-10-27 7 views
5

Java에서 SQL을 사용하는 방법을 배우고 있습니다. JDBC 드라이버를 성공적으로 설치했으며 데이터베이스에서 레코드를 읽고이를 화면에 인쇄 할 수있었습니다.Java에서 ExecuteUpdate SQL 문이 작동하지 않습니다.

아무 문제가없는 업데이트 또는 삽입 문을 수행하려고 할 때 제 문제가 발생합니다. enter image description here

: 문제가

public static void updateSchools(ArrayList<String> newSchool) 
{ 
    try 
    { 
     openDatabase(); 
     stmt = c.createStatement(); 
     int numberOfRows = stmt.executeUpdate("UPDATE schools SET address='abc' WHERE abbreviation='2';"); 
     System.out.println(numberOfRows); 
     closeDatabase(); 
    } 
    catch (Exception e) 
    { 
     System.err.println(e.getClass().getName() + ": " + e.getMessage()); 
     System.exit(0); 
    } 
} 

지원 기능 여기

public static void openDatabase() 
{ 
    c = null; 
    stmt = null; 
    try 
    { 
     Class.forName("org.postgresql.Driver"); 
     c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/Badminton", "postgres", "postgrespass"); 
     c.setAutoCommit(false); 
    } 
    catch (Exception e) 
    { 
     System.err.println(e.getClass().getName() + ": " + e.getMessage()); 
     System.exit(0); 
    } 
    System.out.println("Database opened successfully"); 
} 

public static void closeDatabase() 
{ 
    try 
    { 
     stmt.close(); 
     c.close(); 
    } 
    catch (Exception e) 
    { 
     System.err.println(e.getClass().getName() + ": " + e.getMessage()); 
     System.exit(0); 
    } 
    System.out.println("Database closed successfully"); 
} 

내 아주 간단한 데이터베이스의 이미지가 상주

방법 : 여기 내 코드입니다 콘솔의 결과는 f 따르게 어떤 데이터베이스 변경이 완료되지 않았더라도 :

데이터베이스가 성공적으로 을

을 열어

1

데이터베이스 사전에 성공적으로

감사를 폐쇄!

+0

";" 그것은 SQL을 깨뜨릴 수 있습니다. 예외가 생겨서? – karelss

+0

Mybe 데이터베이스를 새로 고침하거나'c.setAutoCommit (True);를 실행해야합니다. – Sami

+0

@karelss Postgres [documentation] (https://www.postgresql.org/docs/6.4/static/install12418.htm) :'그 SQL 세미콜론을 포함하는 습관을 잡으십시오' –

답변

7

openDatabase 방법에서 c.setAutoCommit(false) 라인을 제거하십시오.

또는

updateSchool 방법의 끝에 c.commit()를 추가합니다.

자동 커밋 모드가 비활성화 된 후 명시 적으로 커밋 메소드를 호출 할 때까지 이 커밋 된 SQL 문은 없습니다. 커밋 메서드에 대한 이전 호출 후에 실행 된 모든 문 은 현재 트랜잭션 인 에 포함되어 함께 커밋됩니다.

+0

고맙습니다. 이제 제 코드가 의도 한대로 작동합니다.). –

+0

이것이 문제를 해결하는 이유에 대한 설명은 당신의 대답에 조금 더 추가 할 것입니다. –

+0

삽입 및 업데이트 쿼리가 데이터베이스에 커밋되지 않았으므로 변경 사항을 보지 못했습니다. 작업 후 커밋 행을 추가하면 변경 사항이 성공적으로 완료되었습니다. –

관련 문제