2011-07-01 245 views
0

我試圖從我的數據庫中檢索行並填充表。我不明白問題出在哪裏,此代碼:從數據庫填充表

if ((report.getMsg()=="selectEventoAll") && (report.getEsito()==1)) 
{ 

    DefaultTableModel dtm = new DefaultTableModel(); 
    eventi_tb.setModel(dtm); 

    try 
    { 
     ResultSet res_eventi = report.getRes(); 
     i = 0; 
     Object[][] datiEventi = new Object[report.getRowCount()][5]; 

     while(res_eventi.next()) 
     { 
      j = 0; 
      while (j < 5) 
      { 
       datiEventi[i][j] = res_eventi.getObject(j+2); 
       j++; 
      } 
      dtm.addRow(datiEventi[i]); 
      i++; 
     } 
    } 
+2

我們不明白你的問題,也許你應該分享。 – Woot4Moo

+0

@ haunted85請搜索ResultsetTableModel,TableFromDatabase,然後閱讀http://download.oracle.com/javase/tutorial/uiswing/components/table.html示例http://www.java2s.com/Code/Java/Swing -JFC/CatalogSwing-JFC.htm和http://download.oracle.com/javase/tutorial/jdbc/basics/jdbcswing.html :-) @ Woot4Moo +1 :-) – mKorbel

+0

@ Woot4Moo:我需要獲取行從我的數據庫表中將數據顯示到表中。爲了實現這一點,我創建了一個DefaultTableModel對象,以便我可以提供一個tableModel。 我使用了一個二維數組來存儲表的每一行,while循環就是這樣做的。然後 'dtm.addRow(datiEventi [i])' 應讓數據顯示在表中,但它不起作用。 – haunted85

回答

4

這是一個不好的設計。你將你的用戶界面和數據庫混合在一起。如果您從Swing更改爲Web UI,那麼您的代碼並不好。這種測試和調試也很難。

將問題分爲兩部分:數據庫訪問和Swing顯示。

有一個對象只會查詢結果並將其加載到數據結構中。

有另一個什麼也不做,只是接受一個數據結構並將其加載到你的Swing UI中進行顯示。

您的應用程序將使數據庫與用戶界面分離。您的測試和調試生活將會更輕鬆。

發佈更多的代碼,也許錯誤消息會幫助我們比猜測更快地幫助你。

結果集中列的循環對我來說看起來很可疑。他們從1行到列數,但是你從2開始。爲什麼?如果您的查詢有五列或更少的列,那麼您會遇到問題。

+0

+1:我更喜歡MVC –

+0

@OMG Ponies從DAO解耦視圖並不意味着它的MVC。我認爲,如果沒有MVC這個詞,就會經常使用它。此外,還有現代的MVC替代品,如果您有興趣,請參閱Martin Fowler的文章:http://martinfowler.com/eaaDev/uiArchs.html。 – Lynch

+0

另請參見[模型視圖演示者模式的退休註釋](http://martinfowler.com/eaaDev/ModelViewPresenter.html) – trashgod

1

您確定您的ResultSet包含任何行嗎?

您確定在致電addRow之前沒有發生一些異常?你在嘗試塊,catch塊做什麼?