【发布时间】: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的声明和实例化位置,因此我们无法帮助您找到问题所在。所以你需要找出它为什么为空