从jtable更新数据时出现ArrayIndexOutOfBoundsException

时间:2016-01-31 19:47:35

标签: java mysql swing jtable

我遇到了一个应该修改数据库数据的按钮的问题。

这是我得到的错误:

"Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 11 >= 11"

我会在这里链接按钮的代码和一些额外的东西,以防有人问......

我已经检查过,是的,数据库列的一切都没问题。

此外,jTable有11列。

colActual = jTableNombre.getSelectedRow();


private void jButtonGuardarNombreActionPerformed(java.awt.event.ActionEvent evt) {                                                     

Connection conn = null;
Statement stmt = null;
        String nombre = (String) jTableNombre.getModel().getValueAt(colActual,2);
        String director=(String) jTableNombre.getModel().getValueAt(colActual,3);
        String año = (String) jTableNombre.getModel().getValueAt(colActual,4);
        String generos = (String) jTableNombre.getModel().getValueAt(colActual,5);
        String actores = (String) jTableNombre.getModel().getValueAt(colActual,6);
        String pais = (String) jTableNombre.getModel().getValueAt(colActual,7);
        String idioma = (String) jTableNombre.getModel().getValueAt(colActual,8);
        String doblaje = (String) jTableNombre.getModel().getValueAt(colActual,9);
        String subtitulos = (String) jTableNombre.getModel().getValueAt(colActual,10);
        String ubicacion = (String) jTableNombre.getModel().getValueAt(colActual,11);

    try {   
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            stmt = conn.createStatement();
            String sql= "UPDATE MOVIES" + 
                        "SET NOMBRE = '"+nombre+"'"+
                        "SET DIRECTOR = '"+director+"'"+
                        "SET AÑO = '"+año+"'"+
                        "SET GENEROS = '"+generos+"'"+
                        "SET ACTORES = '"+actores+"'"+
                        "SET PAIS = '"+pais+"'"+
                        "SET IDIOMA = '"+idioma+"'"+
                        "SET DOBLAJE = '"+doblaje+"'"+
                        "SET SUBTITULOS = '"+subtitulos+"'"+
                        "SET UBICACION = '"+ubicacion+"'"+
                        " WHERE ID = '"+id+"'";
            stmt.executeUpdate(sql);                           

    }
    catch(Exception e) {
        System.out.println(e);
    }
}

1 个答案:

答案 0 :(得分:2)

如果表只有11列,则11不是有效索引。索引从0开始,因此表的有效列索引将为0到10。

另请注意,TableModel.getValueAt的参数为(rowIndex, columnIndex)。你的名为colActual的变量真的在做你打算做的事吗?

jTableNombre.getModel().getValueAt(colActual,2)
相关问题