2013-05-16 73 views
0

所以...我想使用JTable從數據庫中刪除一行,但我不知道爲什麼它不會被刪除,也許是sintaxis DELETE isntruction是錯誤的...我無法使用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()); 

      } 

     } 
     } 


}); 

更新我的程序是這樣的,這是我從錯誤中得到的錯誤。

SQLException:您的SQL語法有錯誤;檢查對應於你的MySQL服務器版本在線路附近使用「」」正確的語法手冊1

我不知道如何評價,如果id_proveedor具有相同的值作爲字符串id_borrado

編輯:找到了解決辦法,真正sitnaxis是: st.executeUpdate;( '+ id_borrado + 「;」, 「DELETE FROM boticaebenezerproveedores WHERE proveedoresid_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(「Seborró」); 正確,但仍不會刪除該行,請檢查sintaxis? – Adrian

+0

如果那是你列的名字,我會認爲刪除'id_proveedor'周圍的引號。 –

+0

我編輯了這個問題,更新了代碼,看看它是否有幫助,我試過了引號,但沒有任何內容。 – Adrian