francis_shen2016 2014-07-15 07:17 采纳率: 0%
浏览 2061

想将数据库的数据调入容器中但显示空指针。所以想问下该怎么解决

public class Wenben extends JFrame implements TableModelListener{
JTable table;
Vectorhang;
Vector lie;//fang 4ge
Vector h1;

//数据调用

public void dy(){   
    lie.add("ID");
    lie.add("name");
    lie.add("time");
    lie.add("money");

    String url = "jdbc:odbc:uaccess";// 根据数据源,设置数据库URL
    String userName = "sh";// 登录数据库用户名
    String password = "sh";// 用户密码
    Connection conn = null;// 声明Connection对象
    Statement stmt = null;// 声明Statement对象

    try {
    // 加载JDBC-ODBC驱动程序
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    // 创建连接
        conn = DriverManager.getConnection(url);//("jdbc:odbc:driver={microsoft access driver (*.mdb)};dbq=d:/user/2011级计算机系学生信息.mdb");   
    // 通过Connection对象,创建Statement对象
        stmt = conn.createStatement();

    // 执行查询"年龄为20岁的学生信息"的SQL语句,得到结果集
        ResultSet rs = stmt.executeQuery("select * from 员工信息表 ");

    // 通过循环输出相关学生信息
        /*
           System.out.println("学号" + "\t\t姓名" + "\t性别" + "\t出生日期"+ "\t年龄" + "\t专业方向"
            + "\t\t\t宿舍");
            */
        while (rs.next()) {
            String id = rs.getString("ID");
            String name = rs.getString("姓名");
            String time = rs.getString("时间");
            int money=rs.getInt("金钱");

            h1.add(id); 
            h1.add(name);
            h1.add(time);   
            h1.add(money);
            hang.add(h1);

            System.out.println(id + "\t" + name + "\t" + time + "\t" + money
                + "\t");
        }   rs.close(); // 关闭结果集
        stmt.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException ex) {
        ex.printStackTrace();
    }
}

//数据调用结束
public Wenben(){
    super("JTable测试");
    TableModel model=new DefaultTableModel(hang,lie);   
    model.addTableModelListener(this);
    table=new JTable(model);
    table.setFillsViewportHeight(true);
    table.setAutoCreateRowSorter(true);


    getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
    /*setSize(300, 200);setVisible(true);validate();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/
}

public void tableChanged(TableModelEvent e){

}
public static void main(String args[]){
    Wenben wb=new Wenben();
    wb.dy();
}

}

  • 写回答

2条回答

  • -立子- 2014-07-16 03:39
    关注

    Vector hang; Vector lie; Vector h1; 这三项都没有初始化,直接调用Vector.add()一定是空指针。

    应该Vector hang = new Vector(); Vector lie = new Vector();

    另外, ResultSet循环体里用的h1都是同一个Vector对象,应该每行数据初始一个Vector,放入hang中。

    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试