2012-04-22 376 views
1

我想將defaulttablemodel的所有值保存到我的sql數據庫,但每當我嘗試通過table.valueAt()打印最後插入的行上的值時,它將返回null。getValueAt()方法返回null

try{ 
    System.out.print(table.getValueAt(5,0)); //<- this returns null even if the table.getRowCount() is 6 

    for(int i=0; i<table.getRowCount();i++){ 
     if((Boolean)table.getValueAt(i,1)) val=1; 
     else val=0; 
     //System.out.print(table.getValueAt(i, 0) +","+ val); 
     String sql1 = "INSERT INTO HREmpListofCard (EmpID, CardNbr, Status, Remarks) VALUES (" 
      +"'"+empID 
      +"','"+table.getValueAt(i, 0).toString() 
      +"','"+val 
      +"','"+table.getValueAt(i,2).toString()+"')"; 

     try { 
      DBConnect.getConnection().createStatement().executeUpdate(sql1); 
     } catch (ClassNotFoundException ex) { 
      Logger.getLogger(ListOfCardID.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (SQLException ex) { 
      Logger.getLogger(ListOfCardID.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
}catch(Exception e){ 
    System.out.print("\nerror!"); 
} 
+0

那麼列0中的值實際上是否爲空?如果不是你把什麼放入桌子模型?還要注意,你不必顯式地調用'toString()',在串聯中你只能寫'... + table.getValueAt(i,0)+ ...'。編譯器會將它改爲'... + String.valueOf(table.getValueAt(i,0))+ ...',它將正確處理null。 – Thomas 2012-04-22 07:07:22

+0

row5,column0單元格顯示的值是多少? – Bitmap 2012-04-22 07:08:53

+0

感謝您的回覆。我確實通過jTable在第5行第0列上添加了一個值,但是當我保存並打印該值時,它將返回null,是否必須放置類似table.fire的內容?在嘗試保存值之前? – John 2012-04-22 07:24:42

回答

0

至於你的第二個問題。 在將查詢放入查詢之前,可以在表中檢查變量。例如,你可以這樣做:

String item1; 

if(table.getValueAt(i, 0) != null) 
    item1 = table.getValueAt(i, 0); 
else 
    item1 = null; 

更換物品1你 「table.getValueAt(I,O)」,並創建一個ITEM2爲貴 「的table.getValueAt(1,2)」

String sql1 = "INSERT INTO HREmpListofCard (EmpID, CardNbr, Status, Remarks) VALUES ("    
     +"'"+empID    
     +"','"+ITEM1 
     +"','"+val    
     +"','"+ITEM2+"')"; 

我還沒有測試過這個,所以我不知道它是否會工作:)

祝你好運!