Java---为什么我的数据模型没有更新

package stuManage;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
public class Test2 extends JFrame implements ActionListener{
JPanel jp1;
JPanel jp2;
JTable jt;
JButton jb1;
JButton jb2;
JButton jb3;
JButton jb4;
JTextField jtf;
JLabel jl;
JScrollPane js;
studModel sm;

public static void main(String[] args) {
    Test2 tt = new Test2();

}

public Test2() {
    jp1 = new JPanel();
    jl = new JLabel("用户名");
    jtf = new JTextField(10);
    jb1 = new JButton("查询");
    jb1.setActionCommand("查询");
    //注册监听
    jb1.addActionListener(this);
    //把控件加入JPanel
    jp1.add(jtf);
    jp1.add(jl);
    jp1.add(jb1);

    //另一个JPanel
    jp2 = new JPanel();
    jb2 = new JButton("增加");
    jb3 = new JButton("修改");
    jb4 = new JButton("删除");
    jp2.add(jb2);
    jp2.add(jb3);
    jp2.add(jb4);
    //中间的表数据部分,移到了模型类去处理
    //创建模型
    sm = new studModel();
    //将模型添加进去!
    jt = new JTable(sm);
    js = new JScrollPane(jt);
    this.add(js);
    this.add(jp1,"North");
    this.add(jp2,"South");
    this.setSize(400, 300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);

}

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("查询")) {
    System.out.println("用户想查询");
    //获取你输进去的值,trim函数的作用是过滤空值
    String name = this.jtf.getText();
    //判断你的值,这里是清晰判断
    String sql = "select * from stud where studName = '"+ name +"'";
    //这是将模型添加进去并更新
    sm = new studModel(sql);
    //更新本界面
    jt.setModel(sm);
    } else {
    System.out.println("没判断");  
    }

}

}

//
package stuManage;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

public class studModel extends AbstractTableModel{
//连接数据库所需要的控件
Vector rowdata, columnNames;
PreparedStatement ps;
Connection ct;
ResultSet rs;

public void init(String sql) {
    if(sql.equals("")) {
        sql = "select * from stud";
    }

    columnNames = new Vector();
    columnNames.add("学号");
    columnNames.add("姓名");
    columnNames.add("性别");
    columnNames.add("年龄");
    columnNames.add("专业");

    rowdata = new Vector();

    try {
        Class.forName("com.mysql.jdbc.Driver");
        ct = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu?useSSL=false","root","root");
        ps= (PreparedStatement) ct.prepareStatement("select * from stud");
        rs =ps.executeQuery();
        while(rs.next()) {

            Vector hang = new Vector();
            hang.add(rs.getString(1));
            hang.add(rs.getString(2));
            hang.add(rs.getString(3));
            hang.add(rs.getInt(4));
            hang.add(rs.getString(5));
            //加入到rowdata中。
            rowdata.add(hang);

        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    finally {
        //关闭资源

        try {
            if(rs!=null){ rs.close();}
            if(ps!=null){ps.close();}
            if(ct!=null){ct.close();}
        } catch (SQLException e) {

            e.printStackTrace();
        }

    }
}
//第一个方法
public studModel() {
    this.init("");
}
//带参数的即带着sql语句的
public studModel(String sql) {
    this.init(sql);
}
@Override
public int getColumnCount() {
    // TODO Auto-generated method stub
    return this.columnNames.size();
}
@Override
public int getRowCount() {
    // TODO Auto-generated method stub
    return this.rowdata.size();
}
//获得行数据
public Object getValueAt(int row, int column) {
    // TODO Auto-generated method stub
    return ((Vector)this.rowdata.get(row)).get(column);
}
//重写列名
public String getColumnName(int arg0) {
    // TODO Auto-generated method stub
    return (String)this.columnNames.get(arg0);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值