当前位置: 代码迷 >> Eclipse >> 数据模型传递更新JTable出现空指针错误 学生
  详细解决方案

数据模型传递更新JTable出现空指针错误 学生

热度:747   发布时间:2016-04-23 02:04:48.0
数据模型传递更新JTable出现空指针异常 学生求助
有两个java文件,一个是模型,装了对表的查询操作,import语句都删了,
****************************************StuModel.java******************************************
public class StuModel extends AbstractTableModel{
Vector rowData,columnNames;
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
//做一个构造函数,用于初始化我们的数据模型
public void init(String sql){
if(sql.equals("")){
sql="select *from student";
}
//中间
columnNames=new Vector();//设置列名
columnNames.add("学号");
columnNames.add("名字");
columnNames.add("性别");
columnNames.add("生日");
columnNames.add("地址");
rowData=new Vector();//可以存放多行
try{
Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:3306/example","test1","520999");
System.out.println("连接数据库服务器成功");
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
Vector hang=new Vector();
hang.add(rs.getInt("num"));
hang.add(rs.getString("name"));
hang.add(rs.getString("sex"));
hang.add(rs.getString("birthday"));
hang.add(rs.getString("address"));
rowData.add(hang);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
rs=null;
}
if(ps!=null){
ps.close();
ps=null;
}
if(con!=null){
con.close();
con=null;
}
} catch(Exception e){
e.printStackTrace();
}
}

}
public void addStu(String sql){
//根据用户输入的sql语句,完成添加任务
}

//通过传递的sql语句来获得数据模型
public StuModel(String sql){
this.init(sql);
}

public StuModel(){
this.init("");
}

//得到共有多少列
public int getColumnCount() {
// TODO Auto-generated method stub
return this.columnNames.size();
}

@Override
public String getColumnName(int column) {
// TODO Auto-generated method stub
return (String)this.columnNames.get(column);
}

//得到共有多少行
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);
}

}
*****************************************Test3.java*********************************************
public class Test3 extends JFrame implements ActionListener{
JPanel jp1,jp2;
JLabel jl1;
JButton jb1,jb2,jb3,jb4;
JTable jt;
JScrollPane jsp;
JTextField jtf;
public static void main(String[] args){
Test3 test3=new Test3();
}
//构造函数
public Test3(){
jp1=new JPanel();
jtf=new JTextField(10);
jb1=new JButton("查询");
jb1.addActionListener(this);
jl1=new JLabel("请输入名字");
//把各个控件加入到jp1
jp1.add(jl1);
jp1.add(jtf);
jp1.add(jb1);

jp2=new JPanel();
jb2=new JButton("添加");
jb3=new JButton("修改");
jb4=new JButton("删除");
//把各个控件加入到jp2
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);

//创建一个数据模型对象
StuModel sm=new StuModel();
  相关解决方案