2013-05-16 4 views
0

그래서 ... JTable을 사용하여 데이터베이스에서 행을 삭제하고 싶지만 삭제되지 않은 이유는 모르겠지만 어쩌면 지침을 삭제하는 것이 잘못되었습니다 ...JTable을 사용하여 SQL 데이터베이스에서 삭제할 수 없습니다

borrar.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(final ActionEvent e) 
     { 

      System.out.println(tabla_proveedor.getSelectedRow()); 

      if (tabla_proveedor.getSelectedRow()!=-1){ 

       id_borrado=datos_proveedor[tabla_proveedor.getSelectedRow()][0]; 
       System.out.println(id_borrado); 

      try{ 
      Statement st = conexion.createStatement(); 
      st.executeUpdate("DELETE FROM `boticaebenezer`.`proveedores` WHERE `proveedores`.`id_proveedor` = id_borrado;'"); 
      System.out.println("Se borró"); 


      } 
      catch (SQLException s){ 
       System.out.println("SQLException: " + s.getMessage()); 
       System.out.println(s.getErrorCode()); 

      } 

     } 
     } 


}); 

내 프로그램이 이렇게 업데이트되었습니다.이 오류는 catch에서 가져옵니다.

SQLException : SQL 구문에 오류가 있습니다. 줄에서 '' '근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 한

1064

나는 id_proveedor이 문자열 id_borrado 값이 같다면 평가하는 방법을 모른다

편집 : 실제 sitnaxis이 솔루션이었습니다 발견 : st.executeUpdate가 ('+ id_borrado + ""; "boticaebenezer에서 삭제 proveedoresproveedoresid_proveedor =.."') 모든 당신의 도움에

감사합니다 :) 데이터베이스 쓰기 작업

답변

1

사용 executeUpdate. 또한 PreparedStatement을 사용하여 SQL Injection 공격으로부터 보호하십시오.

String sql = "DELETE FROM proveedores WHERE id_proveedor=?"; 
PreparedStatement preparedStatement = conexion.prepareStatement(sql); 
preparedStatement.setString(1, "id_borrado"); 

int rows = preparedStatement.executeUpdate(); 

마지막으로, 항상 SQLException의 문제를 소스 수 있도록 예외 블록에서 예외 메시지를 표시합니다.

+0

음, 이제 표시 중입니다. System.out.println ("Se borró"); 올바르게 행을 지우지는 않을 것입니다. sintaxis를 확인해 주시겠습니까? – Adrian

+0

'id_proveedor'가 여러분의 칼럼 이름이라면 따옴표를 제거하는 것이 좋을 것 같습니다. –

+0

내가 더 많은 도움이되는지 확인하기 위해 업데이트 된 코드로 질문을 편집했습니다. 따옴표 만 사용하고 아무 것도 시도하지 않았습니다. – Adrian

관련 문제