JAVA直接从表格中对数据库的数据进行修改和删除,但是数组越界为-1
想要在这个界面中以表格的形式显示出从MYSQL数据库查询出的数据(已实现),并直接在表格中进行删除和修改,按下删除和修改按钮后进行保存。现在就是删除和修改功能没有完成。提...
想要在这个界面中以表格的形式显示出从MYSQL数据库查询出的数据(已实现),并直接在表格中进行删除和修改,按下删除和修改按钮后进行保存。现在就是删除和修改功能没有完成。
提示错误为:Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
求各位大神解决这个问题或者告诉我这两个功能该如何写!多谢!
public void actionPerformed(ActionEvent e){
Object obj = e.getSource();
connection();
Object[] cloum1={"学号","姓名","课程号","课程名","成绩"};
Object[][] row1=new Object[50][5];
table1=new JTable(row1,cloum1);
scrollpane1=new JScrollPane(table1);
jp.add(scrollpane1);
scrollpane1.setBounds(50,50,500,400);
if(obj == b1){
try{
String s1 = tf.getText().trim();
if(list1.getSelectedItem().toString().equals("姓名")){
if(b1.equals(e.getSource())){
for(int i=0;i<50;i++)
for(int j=0;j<5;j++)
table1.setValueAt("", i, j);
ResultSet rs = state.executeQuery( "select grade.学号,姓名,课程号,课程名,成绩 from grade where 姓名 = '"+s1+"'");
int k=-1;
while (rs.next()) {
++k;
String 学号 = rs.getString(1);
……
table1.setValueAt(学号,k,0);
……
}
}
}
}
catch(SQLException e2){……}
}
}
try{
int selectedRowIndex = table1.getSelectedRow(); // 取得用户所选单行
String studentID=row1[selectedRowIndex][0].toString();//获取用户选择的学号//提示错误语句
if(obj == b2){//修改 }
if(obj == b3){//删除 }
}
catch(SQLException e2){…}
} 展开
提示错误为:Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
求各位大神解决这个问题或者告诉我这两个功能该如何写!多谢!
public void actionPerformed(ActionEvent e){
Object obj = e.getSource();
connection();
Object[] cloum1={"学号","姓名","课程号","课程名","成绩"};
Object[][] row1=new Object[50][5];
table1=new JTable(row1,cloum1);
scrollpane1=new JScrollPane(table1);
jp.add(scrollpane1);
scrollpane1.setBounds(50,50,500,400);
if(obj == b1){
try{
String s1 = tf.getText().trim();
if(list1.getSelectedItem().toString().equals("姓名")){
if(b1.equals(e.getSource())){
for(int i=0;i<50;i++)
for(int j=0;j<5;j++)
table1.setValueAt("", i, j);
ResultSet rs = state.executeQuery( "select grade.学号,姓名,课程号,课程名,成绩 from grade where 姓名 = '"+s1+"'");
int k=-1;
while (rs.next()) {
++k;
String 学号 = rs.getString(1);
……
table1.setValueAt(学号,k,0);
……
}
}
}
}
catch(SQLException e2){……}
}
}
try{
int selectedRowIndex = table1.getSelectedRow(); // 取得用户所选单行
String studentID=row1[selectedRowIndex][0].toString();//获取用户选择的学号//提示错误语句
if(obj == b2){//修改 }
if(obj == b3){//删除 }
}
catch(SQLException e2){…}
} 展开
2个回答
展开全部
查询的语句会写,修改和删除的语句也应该会吧,只不过根据主键去修改删除而已,比如你这里的学生ID
至于获取ID那个单元格的数据,应该用table1.getModel().getValueAt(selectedRowIndex
, 0)).toString();
至于获取ID那个单元格的数据,应该用table1.getModel().getValueAt(selectedRowIndex
, 0)).toString();
更多追问追答
追问
那我进行修改,怎么获取我修改后在单元格输入的数据并保存?谢谢~
追答
监听TableModel的tableChanged事件,单元格值改变时候会触发,可以获取那个单元格的位置,这时候可以直接保存入库
实际上一般修改都是选中某行,点“修改”按钮,弹出一个框,在里面修改各种属性,然后点保存,对话框关闭,刷新Table,这样比较符合用户习惯
否则在Table的单元格里不小心输入了什么就会存到数据库,当然也可以在修改之后暂时不入库,单独提供一个“保存”按钮,点击时候才写数据库,但是这样如果用户在点保存之前修改过很多东西,实现上是比较麻烦的
光打字可能不好理解,方便的话可以私信QQ
2013-12-01
展开全部
表格,怎么会在每次的事件中被创建呢。
应该在初始化程序的时候,创建好表格、加载数据。如果要重新加载数据,那是重新设置表格的数据。
应该在初始化程序的时候,创建好表格、加载数据。如果要重新加载数据,那是重新设置表格的数据。
追问
不会一开始就把表格创建好,只会这种的……请问您说的那种方法改如何做?能直接写出来大概代码吗?文字的说法我理解很差……谢谢了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询