ridhi
ridhi

Reputation: 45

ArrayIndexOutOfBoundsException inserting JTable data to SQL database

I have made a project on railway management system and want to insert values from text fields and Java table to MySQL database. How can I get rid of this error? Please help!!

int rows = jTable1.getRowCount();
for(int row = 0; row<rows ; row++){
    int index=1;
    String S_No = (String) jTable1.getValueAt(row, 1);
    String Name = (String) jTable1.getValueAt(row, 2);
    String Age = (String) jTable1.getValueAt(row, 3);
    String Gender = (String) jTable1.getValueAt(row, 4);
    String berth_preference = (String) jTable1.getValueAt(row, 5);
    String Quota = (String) jTable1.getValueAt(row, 6);
    String tno =(String) cb1.getSelectedItem();
    String tname =(String) cb2.getSelectedItem();
    String clas =(String) cb3.getSelectedItem();
    String tic= tick.getText();
    String frms=frm.getText();
    String tos=to.getText();
    String boarding=bp.getText();
    String reser=ru.getText();
    String jdate=date.getText();
    String pnr=l1.getText();

    try{
        Class.forName("java.sql.Driver");
        con=DriverManager.getConnection("jdbc:mysql://localhost/railway","root","ridhi");
        st =con.prepareStatement("INSERT INTO pnr(pnr_no,Train_Number,Train_Name,From_m,T_o,Date,Class,Reserved_Upto,Boarding_Pt,no_tickets,S_No,Name,Age,Gender,berth_preference,Quota) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

        st.setString(1, S_No);
        st.setString(2, Name);
        st.setString(3, Age);
        st.setString(4, Gender);
        st.setString(5, berth_preference);
        st.setString(6, Quota);

        st.executeUpdate();
        index++;

        this.setVisible(true);
        new payment().setVisible(true);
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null,e.getMessage());

    }
}

Error:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 6 >= 6
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
at javax.swing.JTable.convertColumnIndexToModel(JTable.java:2553)
at javax.swing.JTable.getValueAt(JTable.java:2695)
at reservation.reservationActionPerformed(reservation.java:341)
at reservation.access$100(reservation.java:21)
at reservation$2.actionPerformed(reservation.java:245)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6216)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5981)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

And now I am getting a new error:

java.sql.SQLException: Parameter index out of range (0 < 1 ).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3283)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3272)
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4108)
at reservation.reservationActionPerformed(reservation.java:358)
at reservation.access$100(reservation.java:21)
at reservation$2.actionPerformed(reservation.java:245)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6216)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5981)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Upvotes: 3

Views: 738

Answers (2)

Madhawa Priyashantha
Madhawa Priyashantha

Reputation: 9882

change this to this jtable columns are zero index based.if you have 6 columns of jtable then max column index is 5 not 6 .error is because of this but care about row index 2 if you want to get first row then getValueAt(0, n); not getValueAt(1, n);

String S_No = (String) jTable1.getValueAt(row, 0);
String Name = (String) jTable1.getValueAt(row, 1);
String Age = (String) jTable1.getValueAt(row, 2);
String Gender = (String) jTable1.getValueAt(row, 3);
String berth_preference = (String) jTable1.getValueAt(row, 4);
String Quota = (String) jTable1.getValueAt(row, 5);// 5 not 6

you should have same column count in prepared statement also .

 st =con.prepareStatement("INSERT INTO pnr(pnr_no,Train_Number,Train_Name,From_m,T_o,Date,Class,Reserved_Upto,Boarding_Pt,no_tickets,S_No,Name,Age,Gender,berth_preference,Quota) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

...........................................................................................

 st.setString(1, S_No);
 st.setString(2, Name);
 st.setString(3, Age);
 st.setString(4, Gender);
 st.setString(5, berth_preference);
 st.setString(6, Quota);

you should have like, you have missed column phone number train number

 st.setString(1, pnr);
 st.setString(2, tno );

Upvotes: 3

Golam Rabbi
Golam Rabbi

Reputation: 65

When ArrayIndexOutOfBoundsException is shown: If we request for an index that is either negative, or greater than or equal to the size of the array, an ArrayIndexOutOfBoundsException is thrown. In your case, java.lang.ArrayIndexOutOfBoundsException: 6 >= 6.

Upvotes: 0

Related Questions