2013-04-25 7 views
0

현재 MSAccess 데이터베이스에서 데이터를 가져 오는 Java 프로그램을 만들고 있으며 이러한 오류 중 일부는 매우 실망 스럽습니다. 나는 계속이 SQL.Exception : 점점 매개 변수가. 이 프로그램에서 마지막으로 남은 버그에 대해 1 개의 오류가 예상됩니다.MsAccess SQL 예외 매개 변수가 너무 적음

는 DB에

약간의 배경 :. 그것은 3 개 테이블 (플레이어 테이블 (11 열), 팀 테이블 (3 열) 및 상대 테이블 (6 열)

이가있는 기능을 모두 나는 문제가 여기에있다 꽤 확신 곳

conn = Connect.ConnectDB(); 
    String sql = "insert into Player ("+"PlayerLastName,"+"PlayerFirstName,"+"Position)"+ "values("+txtid.getText()+ ",'"+txtname.getText()+"','"+txtaddress.getText()+"')" ; 
    try{ 
     pst = conn.prepareStatement(sql); 
     pst.executeQuery(); 
     pst.setString(1, txtid.getText()); 
     pst.setString(2, txtname.getText()); 
     pst.setString(3, txtaddress.getText()); 
     JOptionPane.showMessageDialog(null, txtid.getText() + " Saved"); 
     UpdateJTable(); 
     //conn.close(); 
    } 
    catch(Exception e){ 
     JOptionPane.showMessageDialog(null, e); 
    } 

또는 삽입 성에서 성 주위에 작은 따옴표를 놓치고처럼

한 가지를 들어
 String sql = "select * from Player where PlayerLastName = " +txtid.getText()+ ""; 
    String pine = null; 
    try{ 
     pst = conn.prepareStatement(sql); 

     ResultSet res; 
     res = pst.executeQuery(); 

     pine.equalsIgnoreCase(jTable1.getModel().getValueAt(rowsu, 10).toString()); 

     while(res.next()){ 
      JOptionPane.showMessageDialog(null, txtname + " " + txtid.getText() + " has a total of " +"4");//+ pine);//res.getInt("Penalties")); 

     } 
     UpdateJTable(); 

    } 
    catch(Exception e){ 
     JOptionPane.showMessageDialog(null, e); 
    } 
+0

이 오류 메시지는 일반적으로 맞춤법이 잘못된 열 이름으로 해결됩니다. – MicSim

답변

1

, 그것은 보이는이 기능 atement.

다른 오류가있을 수도 있습니다. 이는 내가 알아 차린 첫 번째 문제입니다.

SQL 문자열을 실행하기 전에 로그하는 것이 디버깅하기 쉬워야합니다.

편집

나는 setString 등으로 통화가()도 문제가있다 생각합니다. 여기에 어떻게해야합니까 :

conn = Connect.ConnectDB(); 
    String sql = "insert into Player (PlayerLastName, PlayerFirstName, Position) values(?, ?, ?)"; 
    try{ 
     pst = conn.prepareStatement(sql); 
     pst.setString(1, txtid.getText()); 
     pst.setString(2, txtname.getText()); 
     pst.setString(3, txtaddress.getText()); 
     pst.execute(); 
     JOptionPane.showMessageDialog(null, txtid.getText() + " Saved"); 
     UpdateJTable(); 
     //conn.close(); 
    } 
    catch(Exception e){ 
     JOptionPane.showMessageDialog(null, e); 
    } 
+0

나는 SQL에 매우 익숙하다. 로그라고하면 콘솔에 출력되는 것을 의미합니까? – Fisheries

+0

물론 가능합니다. –

+1

참고로, 사용자 입력을 SQL 문에 연결하는 것은 매우 나쁜 습관입니다. 매개 변수를 대신 사용하십시오. 구글 "SQL 주입". –

관련 문제