【问题标题】:How to insert data from databse to JTable using 4 tier如何使用 4 层将数据从数据库插入到 JTable
【发布时间】:2014-11-09 08:41:00
【问题描述】:

这是我遇到的

用户界面:

       jlbl.setText("Purchase ID: ");
   String counterV = String.valueOf(purc.getCounter());

   jTF3.setText("P000"+counterV);
   JPanel p5 = new JPanel();
    p5.add(jlbl);
   p5.add(jTF3);

  else if(e.getSource() == jbtRetrieve)
        {

            String pID = jTF3.getText();
        Purchase purchase = purcControl.selectRecord(pID);
        if (purchase != null) {
            String pdCountStr = purchase.getPurchaseDetailsID();
            String pdCountStr2 = pdCountStr.substring(2,6);
            int pdCount = Integer.parseInt(pdCountStr2);
            for(int g = 0; g<pdCount;g++)
            tableModel.addRow(new Object[]{ purchase.getPurchaseDetailsID(),purchase.getStockID(),purchase.getPrice(),purchase.getQuantity()});

        }
        else {
           JOptionPane.showMessageDialog(null, "No such purchase ID.", "RECORD NOT FOUND", JOptionPane.ERROR_MESSAGE);


        }
        }

控制:

    public Purchase selectRecord(String pID){
    return purcDA.getRecord(pID);
}

DA:

 public Purchase getRecord(String pID){
    String queryStr = "SELECT * FROM " + tableName + " WHERE PurchaseID = ?";
    Purchase purchase = null;
    //MainPurchasingFrame purc = new MainPurchasingFrame();

    try{
        stmt = conn.prepareStatement(queryStr);
        stmt.setString(1,pID);
        ResultSet rs = stmt.executeQuery();



     if(rs.next()){
        purchase = new Purchase(rs.getString("purchaseDetailsID"),pID, ,rs.getString("stockID"),rs.getDouble("price"),rs.getInt("quantity"));
     }
    }   catch (SQLException ex){
        JOptionPane.showMessageDialog(null,ex.getMessage(),"ERROR",JOptionPane.ERROR_MESSAGE);
    }
    return purchase;
}

域:

 public String getPurchaseDetailsID(){

    return purchaseDetailsID ;

}
public double getPrice(){
    return price;
}
public String getStockID(){
    return stockID;
}
public int getQuantity(){
    return quantity;
}
public void setPurchaseDetailsID(String r){
    this.purchaseDetailsID = r ;
}
public void setPrice(double p){
    this.price = p;
}
public void setStockID(String s){
    this.stockID = s;
}
public void setQuantity(int q){
    this.quantity = q;
}

如何像这样通过 4 层将我的数据输入到 JTable 中?当一切都合二为一时,我知道该怎么做,但我面对Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 每次我试图检索数据。我正在使用netbean。

【问题讨论】:

  • NPE 指向哪一行?它应该让您知道应该在哪里寻找。
  • 其指向 Purchase purchase = purcControl.selectRecord(pID);我不知道有什么问题。
  • 那么你必须弄清楚为什么purcControl 为空。我们不能这样做,因为您没有提供必要的代码
  • 我试过了,但是,我已经为购买设置了值,如果它为空,那么它不运行 else 部分吗?
  • 如果您尝试对空对象 (purcControl) 执行操作 (selectRecord(pID)),您将获得 NPE。由于我们看不到 purcControl 的声明和实例化位置,因此我们无法帮助您找到问题所在。所以你需要找出它为什么为空

标签: java swing jtable derby


【解决方案1】:
purcControl = new MaintainPurchasingControl();

初始化 purcControl,这样 NPE 就不会发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-08
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 2015-02-02
    • 2015-02-19
    相关资源
    最近更新 更多