2016-08-12 4 views
1

저는 프로그래밍에 익숙한 새로운 사용자입니다. Java를 배우기 시작했으며 간단한 UI를 텍스트 필드에 입력 한 간단한 프로그램을 작성하여 MYSQL에 데이터를 삽입 할 수 있습니다. 하지만 문제는 내가 연결을 닫을 수 없습니다. 내 프로그램에서 연결을 닫을 코드를 작성할 때 오류가 많이 발생합니다.Java mysql insert

연결

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     String url = "jdbc:mysql://localhost/testdb"; 
     String user = "root"; 
     String password = "mysql"; 
     Connection myConn = DriverManager.getConnection(url, user, password); 
     Statement myStmt = myConn.createStatement(); 
     String sql= "insert into table1 (no,name,address,password) values ('"+numberr.getText()+"', '"+namee.getText()+"', '"+addresse.getText()+"', '"+passworde.getText()+"')"; 
     myStmt.executeUpdate(sql); 
     System.out.println("Insert complete"); 

    } catch(SQLException se){ 
     se.printStackTrace(); 
    } 

} 난 내 코드는 다음과 같은 오류를 많이 발생 밀접한 관련 프로그램 쓰기

닫지 않고 삽입 데이터를하고있다

MY 코드 :

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     String url = "jdbc:mysql://localhost/testdb"; 
     String user = "root"; 
     String password = "mysql"; 
     Connection myConn = DriverManager.getConnection(url, user, password); 
     Statement myStmt = myConn.createStatement(); 
     String sql= "insert into table1 (no,name,address,password) values ('"+numberr.getText()+"', '"+namee.getText()+"', '"+addresse.getText()+"', '"+passworde.getText()+"')"; 
     myStmt.executeUpdate(sql); 
     System.out.println("Insert complete"); 

    } catch(SQLException se) {  
     se.printStackTrace(); 
    } catch(Exception e) {  
     e.printStackTrace(); 
    } finally { 
     try { 
      if(myStmt!=null) { 
       myStmt.close(); 
      } 
     } catch(SQLException se) { 
     }// do nothing 
     try { 
      if(myConn!=null) { 
       myConn.close(); 
      } 
     } catch(SQLException se) { 
      se.printStackTrace(); 
     } 
    }//end finally 
    System.out.println("Goodbye!"); 
} 
+1

어떤 종류의 오류가 발생합니까? –

+2

SQL에 대해 준비된 문을 조사해야합니다. 이 코드를 사용하면 SQL Injection을 사용할 수 있습니다. – peternyc

+1

적절한 도움을 얻으려면 적절한 질문을 작성해야합니다. 가지고있는 오류를 보여주고 문제가있는 코드의 최소한의 검증 가능한 예제를 작성하십시오. –

답변

0

try with resources을 살펴볼 수 있습니다. 이렇게하면 연결 괄호가 리소스 중괄호 안에 들어가고, JVM이 완료되면 자동으로 연결을 닫거나 문제가 발생합니다.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 

     String url = "jdbc:mysql://localhost/testdb"; 
     String user = "root"; 
     String password = "mysql"; 

     try (Connection myConn = DriverManager.getConnection(url, user, password)) { 
      Statement myStmt = myConn.createStatement(); 
      String sql = "insert into table1 (no,name,address,password) values ('" + numberr.getText() + "', '" 
        + namee.getText() + "', '" + addresse.getText() + "', '" + passworde.getText() + "')"; 
      myStmt.executeUpdate(sql); 
      System.out.println("Insert complete"); 

     } catch (SQLException se) { 
      se.printStackTrace(); 
     } 
    } 
+0

답장을 보내 주셔서 감사합니다. 위 코드는 작업이 완료된 후 db 연결을 닫는 데 충분합니다. – Hara

+0

예, try-with-resources를 사용하면 두 경우 모두 자동으로 연결이 닫힙니다. 정상 실행과 예외가 모두 처리됩니다. –