java中JTable的问题,求解,大神在哪里

import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class a160407 extends JFrame implements ActionListener{
JButton anl1,anl2,anl3,anl4;
JLabel bq;
JTextField wbk;
JPanel mb1,mb2;
JTable bg;
JScrollPane gd;
aaaa aa;
public static void main(String[] args){
a160407 aaa=new a160407();
}
public a160407(){

    anl1=new JButton("查询");
    anl1.addActionListener(this);
    anl1.setActionCommand("chaxun");
    anl2=new JButton("添加");
    anl2.addActionListener(this);
    anl2.setActionCommand("tianjia");
    anl3=new JButton("删除");
    anl3.addActionListener(this);
    anl3.setActionCommand("shanchu");
    anl4=new JButton("修改");
    anl4.addActionListener(this);
    anl4.setActionCommand("xiugai");
    bq=new JLabel("请输入姓名");
    wbk=new JTextField(7);
    mb1=new JPanel();
    mb2=new JPanel();
    aa=new aaaa();  
    bg=new JTable(aa);
    gd=new JScrollPane(bg);

    mb1.setLayout(new FlowLayout());mb1.add(bq);mb1.add(wbk);mb1.add(anl1);

    mb2.setLayout(new FlowLayout());mb2.add(anl2);mb2.add(anl3);mb2.add(anl4);

    this.add(mb1,BorderLayout.NORTH);
    this.add(mb2,BorderLayout.SOUTH);
    this.add(gd);

    this.setResizable(false);
    this.setSize(800,600);
    this.setLocation(300,150);
    this.setTitle("QQ联系人");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);      
}
public void actionPerformed(ActionEvent e){
    if(e.getActionCommand().equals("chaxun")){
        String xingming=this.wbk.getText().trim();
        String sql="select * from QQ where xinmin='"+xingming+"'";
        aa=new aaaa(sql);
        bg.setModel(aa);
    }
    else if(e.getActionCommand().equals("tianjia")){
        tianjia tj=new tianjia(this,"信息添加",true);
        aa=new aaaa();
        bg.setModel(aa);
        System.out.println("fffffffffffffff");
    }
    else if(e.getActionCommand().equals("shanchu")){

        int ii=this.bg.getSelectedRow();
        if(ii==-1){

            JOptionPane.showMessageDialog(this,"请选中要删除的行");
            return;
        }   程序总是运行到下面的这句话出错????????????????????
            String st=(String)aa.getValueAt(ii,0);我发现getValueAt(ii,0)中的0改成1或者其他不是0的数程序就正常了,请好心的大神把我解决一下!
            PreparedStatement ps=null;
            Connection ct=null;
            ResultSet rs=null;
            try{
                 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
                 ct=DriverManager.getConnection("jdbc:odbc:SQL Sever","sa","923274995");    
                 ps=ct.prepareStatement("delete  from QQ where xinmin=?");
                 ps.setString(1,st);
                 ps.executeUpdate();
            }catch(Exception e2){}
            finally{
                try {
                    if(rs!=null)
                    {
                        rs.close();
                    }
                    if(ps!=null)
                    {
                        ps.close();
                    }
                    if(ct!=null)
                    {
                        ct.close();
                    }

                } catch (Exception e3){}

            }aa=new aaaa();
            bg.setModel(aa);


    }
    else if(e.getActionCommand().equals("xiugai")){
        int ii=this.bg.getSelectedRow();
        if(ii==-1){ 
            JOptionPane.showMessageDialog(this,"请选中要修改的行");
            return;
        }   
        new xiugai(this,"信息修改",true,aa,ii);

    }
}

}
要解决的问题在上面代码一排问号??????的下面

3个回答

你这个 删除记录的sql判断条件是xinmin,然后你getValueAt就应该是获取xinmin,getValueAt中后面一个参数是columnIndex,列值,你看看姓名是哪一列;
还有,建议你用编号做判断,你这整个代码一行注释都没有,醉了。有空学学怎么调试吧,很简单的,你设个断点出错的位置,很好排查的

qq_15002323
叫我宫城大人 回复qq_34316891: 哈哈,我也是小白啊- -。而且现在没人用java写桌面应用了,你可以写着玩玩,然后转java web。
接近 4 年之前 回复
qq_34316891
qq_34316891 谢谢你哈!我已经搞懂了
接近 4 年之前 回复

看看aaaa类的代码

qq_34316891
qq_34316891 不好意思哦,我刚刚出去的。
接近 4 年之前 回复

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.table.*;
class aaaa extends AbstractTableModel {
Vector ziduan,jilu;
PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
public int getRowCount()
{
return this.jilu.size();
}
public int getColumnCount()
{
return this.ziduan.size();
}
public Object getValueAt(int hang, int lie)
{
return ((Vector)this.jilu.get(hang)).get(lie);
}
public String getColumnName(int e)
{
return (String)this.ziduan.get(e);
}
public aaaa(){
bb("select * from QQ");
}
public aaaa(String sql){
bb(sql);
}
public void bb(String a){
ziduan=new Vector();
ziduan.add("编号");
ziduan.add("姓名");
ziduan.add("性别");
ziduan.add("年龄");
ziduan.add("手机号");
ziduan.add("QQ号");

ziduan.add("名片");
ziduan.add("会员");
ziduan.add("签名");
ziduan.add("天数");

jilu=new Vector();

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
ct=DriverManager.getConnection("jdbc:odbc:SQL Sever","sa","923274995");

ps=ct.prepareStatement(a);

rs=ps.executeQuery();

while(rs.next())
{
Vector hang=new Vector();
hang.add(rs.getInt(1));
hang.add(rs.getString(2));
hang.add(rs.getString(3));
hang.add(rs.getInt(4));
hang.add(rs.getLong(5));
hang.add(rs.getLong(6));
hang.add(rs.getString(7));
hang.add(rs.getString(8));
hang.add(rs.getString(9));
hang.add(rs.getInt(10));
jilu.add(hang);
}
} catch (Exception e){}
finally
{
try {
if(rs!=null)
{
rs.close();

            }
            if(ps!=null)
            {
                ps.close();
            }
            if(ct!=null)
            {
                ct.close();
            }

        } catch (Exception e){}
    }
}

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

1
各位大神求帮忙,java编的语料标注方面的程序初学看不懂求解释,自己一些注释忽略就好,多谢多谢!!
0
关于Java swing Jtable 单击与双击的不同效果是什么原因造成的
1
通过JTable对properties文件进行读取编辑保存。
1
java中怎么根据jtable的内容作出各种统计图
2
纯Java实现的任务管理器,结束一个进程如何实现刷新,显示当前所剩进程?
1
在swing的Jtable初始化中已经添加过数据,查询一条或者多条数据,Jtbale里数据不更新
1
求解jtable数据填充问题
1
求大神,想按下堆栈按钮时,调用JTable让这个控件显示在界面上,即显示出堆栈顺序
1
java JTable 中怎样实现渲染一个单元格,而不是一列呢?
2
JAVA 如何用实现table内容向另一table内容的复制。求大神们帮忙解决!
4
想要从数据库查询学生信息显示到JTable,出现空指针错误怎么办?
3
想要用java 查询sql server数据库中的信息显示到JTable中,可以举个例子吗?
1
java jTable 中怎样实现获得一行中的某些数据??急!!!
1
java JTable 刷新问题
1
swing中JTable的下拉列表获取值问题
3
java 中用defaulttablemodel 给JTable制作表头
1
关于java中卡片布局中插入JTable问题
1
关于java se jdbc的问题
2
java问题,以下的代码是关于“在jtable中添加按钮”的代码,其中的这句话(如下)是什么意思呢?
1
Jtable KeyEvent.VK_DOWN setRowSelectionInterval