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中都是这样。第三方图书馆可以自由地做他们喜欢做的事情,但是惯例是使用零基索引。谢谢,我来回答一个单独的问题。