Java 从jtable更新数据时发生ArrayIndexOutOfBoundsException

Java 从jtable更新数据时发生ArrayIndexOutOfBoundsException,java,mysql,swing,jtable,Java,Mysql,Swing,Jtable,我有一个按钮问题,该按钮应该修改数据库中的数据 这就是我得到的错误: "Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 11 >= 11" 我将在这里链接按钮的代码和一些额外的东西,以防有人问 我检查过了,是的,数据库列一切正常 此外,jTable有11列 colActual = jTableNombre.getSelectedRow(); private void jB

我有一个按钮问题,该按钮应该修改数据库中的数据

这就是我得到的错误:

"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);
    }
}

如果表只有11列,那么11不是有效的索引。索引从0开始,因此表的有效列索引应该是0到10

还请注意,
TableModel.getValueAt
的参数是
(行索引、列索引)
。名为
colActual
的变量是否真的执行了您想要执行的操作

jTableNombre.getModel().getValueAt(colActual,2)

斯塔克崔斯!stacktrace在哪里?我对java有点陌生,stacktrace的意思是控制台的完整错误报告?谢谢你的回答!你应该使用Thank You@MadProgrammer,我试试!谢谢它解决了“ArrayIndexOutOfBoundsException”错误!dindt知道jTables上的索引从0开始,而不是从1开始,我非常感激!我现在得到一个关于SQL的错误,我allready从每一行中获取额外的集合,并添加“,”和空间以适应语法。。。我认为错误在最后一行,它说:不能比较int和char。但id和id在数据库和java代码中都是int。有什么想法吗?请将SQL问题作为单独的问题发布,我们来看看。顺便说一下,这不仅仅适用于
JTable
s。在Java中,所有索引操作都从0开始,至少在任何正式Java API中都是这样。第三方图书馆可以自由地做他们喜欢做的事情,但是惯例是使用零基索引。谢谢,我来回答一个单独的问题。