Validate Delete button, when you have not selected anything java and mysql

0

It works to me when deleting data from the B.D but when I do not select anything, I must leave the message that indicates that I select a row and I also get Exception. This is my Code.

int fila =tbproductos.getSelectedRow();

String valor =(String) tbproductos.getValueAt(fila, 0);

 if(fila>=0){

          PreparedStatement pps;

            try {

                pps = cn.prepareStatement("DELETE FROM Producto where idp='"+valor+"'");

                datos.removeRow(fila);
                 pps.executeUpdate();

                 JOptionPane.showMessageDialog(null,"Dato Eliminado");
                  mostrar_tabla();
            } catch (SQLException ex) {
                Logger.getLogger(Mostrar.class.getName()).log(Level.SEVERE, null, ex);
            }


        }
        else
            JOptionPane.showMessageDialog(null, "Seleccione la  Fila");


Estas son mis Exceptions.

Picked up _JAVA_OPTIONS:   -Dawt.useSystemAAFontSettings=gasp
Conexion Establecida
Conexion Establecida
Conexion Establecida
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.Vector.elementData(Vector.java:734)
    at java.util.Vector.elementAt(Vector.java:477)
    at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:648)
    at javax.swing.JTable.getValueAt(JTable.java:2717)
    at Interfaz.Mostrar.EliminarActionPerformed(Mostrar.java:155)
    at Interfaz.Mostrar.access$000(Mostrar.java:25)
    at Interfaz.Mostrar$1.actionPerformed(Mostrar.java:115)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    
asked by Eduardo T Mendoza 20.07.2018 в 02:43
source

1 answer

0

Your problem is that you are getting the value before checking that the row is valid.

Enter the sentence

String valor =(String) tbproductos.getValueAt(fila, 0);

inside your if

int fila =tbproductos.getSelectedRow();
if(fila>=0){
    String valor =(String) tbproductos.getValueAt(fila, 0);
    PreparedStatement pps;

            try {

                pps = cn.prepareStatement("DELETE FROM Producto where idp='"+valor+"'");

                datos.removeRow(fila);
                 pps.executeUpdate();

                 JOptionPane.showMessageDialog(null,"Dato Eliminado");
                  mostrar_tabla();
            } catch (SQLException ex) {
                Logger.getLogger(Mostrar.class.getName()).log(Level.SEVERE, null, ex);
            }


        }
        else
            JOptionPane.showMessageDialog(null, "Seleccione la  Fila");
    
answered by 20.07.2018 в 08:53