从数据库填充表

时间:2011-07-01 18:43:38

标签: java oracle swing jtable

我正在尝试从数据库中检索行并填充表格。我不明白这段代码的问题所在:

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 个答案:

答案 0 :(得分:4)

这是一个糟糕的设计。您将UI和数据库混合在一起。如果从Swing更改为Web UI,则代码不合适。用这种方式测试和调试也比较困难。

将问题分解为两部分:数据库访问和Swing显示。

让一个对象不做任何事情,只查询结果并将它们加载到数据结构中。

让另一个除了接受数据结构并将其加载到Swing UI中以便显示之外什么都不做。

您的应用程序将使数据库与用户界面分离。您的测试和调试生活将更加轻松。

发布更多代码,也许错误消息可以帮助我们比猜测更快地帮助你。

结果集中列的循环看起来很可疑。它们从1到列数运行,但是从2开始。为什么?如果您的查询包含五个或更少的列,那么您将遇到问题。

答案 1 :(得分:1)

您确定ResultSet包含任何行吗?

您是否确定在调用addRow之前未发生某些异常?你在try块中,catch块有什么作用?