2017-05-12 2 views
0

Netbeans의 JFrame 패널에서 SQL 데이터베이스를 업데이트하려고합니다. 현재 "registernewStudent"패널에서 사용자가 4 개의 텍스트 필드를 사용할 수있는 버튼을 사용하려고합니다. 첫 번째 (Student ID)와 마지막 (room)은 정수 여야하고 가운데 2는 문자열이어야합니다. 그러나 "스레드 예외"라고하는 오류 메시지가 나타납니다. AWT-EventQueue-0 "java.lang.NullPointerException"Java with SQL insert

다음은 버튼의 소스 코드입니다.

이것은 첫 번째 실제 프로젝트이므로 얻을 수있는 도움에 감사드립니다.

private void btnNyREActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     String talStrang1 = txtElevID.getText(); 
     int tal1 = Integer.parseInt(talStrang1); 
     String Strang2 = txtElevFN.getText(); 
     String Strang3 = txtElevEN.getText(); 
     String talStrang4 = txtElevSS.getText(); 
     int tal2 = Integer.parseInt(talStrang4); 

     database.insert("insert into Elev values(tal1, Strang2, Strang3,tal2)"); 

    } catch (InfException ex) { 
     Logger.getLogger(NyRegElev.class.getName()).log(Level.SEVERE, null, ex); 
    } 
}  
+2

'PreparedStatement' 사용 방법을 배우십시오. http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html –

답변

3

하나의 경우 값을 삽입 할 열을 지정해야합니다. 같은 뭔가 :

database.insert("insert into Elev (column1, column2, column3, column4) values...;

column# 테이블의 컬럼의 실제 이름이 될 것입니다.

두 번째로, 변수를 SQL에 문자열로 넣을 수는 없습니다. 변수로 인식하지 않습니다. 대신 연결을 사용해야하며 다음과 같은 작업을 수행해야합니다.

database.insert("insert into Elev (column1, column2, column3, column4) values(" + tal1 + "," + Strang2 + "," Strang3 + "," tal2 + ")"; 

그러나 이로 인해 취약점에 노출 될 수 있습니다. 대신 SQL 삽입을 피하려면 prepared statements을 사용해야합니다.

위의 링크에서 Java로 작성된 MySQL 준비문의 예제를 찾을 수 있습니다. 예를 들어, 당신의 쿼리를 촬영했습니다 그것은 당신을 위해 어떻게 보일지에 예를 변환 :

String query = "insert into Elev (column1, column2, column3, column4) values (?, ?, ?, ?)"; 

// create the mysql insert preparedstatement 
     PreparedStatement preparedStmt = conn.prepareStatement(query); 
     preparedStmt.setInt(1, tal1); 
     preparedStmt.setString (2, Strang1); 
     preparedStmt.setString (3, Strang3); 
     preparedStmt.setInt(4, tal2); 

// execute the preparedstatement 
     preparedStmt.execute(); 

제공된 매개 변수를 사용하고있는 ? 년대의 장소에 넣어 제조 한 문 query 변수 (다른 것들 중에서).