我正在尝试从数据库中检索行并填充表格。我不明白这段代码的问题所在:
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++;
}
}
答案 0 :(得分:4)
这是一个糟糕的设计。您将UI和数据库混合在一起。如果从Swing更改为Web UI,则代码不合适。用这种方式测试和调试也比较困难。
将问题分解为两部分:数据库访问和Swing显示。
让一个对象不做任何事情,只查询结果并将它们加载到数据结构中。
让另一个除了接受数据结构并将其加载到Swing UI中以便显示之外什么都不做。
您的应用程序将使数据库与用户界面分离。您的测试和调试生活将更加轻松。
发布更多代码,也许错误消息可以帮助我们比猜测更快地帮助你。
结果集中列的循环看起来很可疑。它们从1到列数运行,但是从2开始。为什么?如果您的查询包含五个或更少的列,那么您将遇到问题。
答案 1 :(得分:1)
您确定ResultSet包含任何行吗?
您是否确定在调用addRow
之前未发生某些异常?你在try块中,catch块有什么作用?