簡體   English   中英

從數據庫填充表

[英]Populate table from database

我正在嘗試從我的數據庫中檢索行並填充一個表。 我不明白這段代碼的問題出在哪里:

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++;
        }
    }

這是一個糟糕的設計。 您正在將您的 UI 和數據庫混合在一起。 如果您從 Swing 更改為 web UI,那么您的代碼就不好了。 這種方式也更難測試和調試。

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

擁有一個 object,除了查詢結果並將它們加載到數據結構中之外什么都不做。

讓另一個只接受數據結構並將其加載到 Swing UI 中進行顯示。

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

發布更多代碼,也許一條錯誤消息會幫助我們比猜測更快地幫助您。

結果集中列的循環對我來說看起來很可疑。 它們從 1 到列數,但您從 2 開始。為什么? 如果您的查詢有五個或更少的列,那么您將在那里遇到問題。

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

您確定在調用addRow之前沒有發生某些異常嗎? 你在 try 塊中,catch 塊有什么作用?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM