Java 从数据库填充表
我试图从数据库中检索行并填充表。我不明白此代码的问题在哪里:Java 从数据库填充表,java,oracle,swing,jtable,Java,Oracle,Swing,Jtable,我试图从数据库中检索行并填充表。我不明白此代码的问题在哪里: if ((report.getMsg()=="selectEventoAll") && (report.getEsito()==1)) { DefaultTableModel dtm = new DefaultTableModel(); eventi_tb.setModel(dtm); try { ResultSet res_eventi = report.getRe
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++;
}
}
if((report.getMsg()=“selectEventoAll”)&&(report.getEsito()=“1))
{
DefaultTableModel dtm=新的DefaultTableModel();
事件设置模型(dtm);
尝试
{
ResultSet res_eventi=report.getRes();
i=0;
Object[][]datiEventi=新对象[report.getRowCount()][5];
while(res_eventi.next())
{
j=0;
而(j<5)
{
datiEventi[i][j]=res_eventi.getObject(j+2);
j++;
}
dtm.addRow(datiEventi[i]);
i++;
}
}
这是一个糟糕的设计。您将UI和数据库混合在一起。如果您从Swing更改为web UI,您的代码就不好了。以这种方式进行测试和调试也比较困难
将问题分为两部分:数据库访问和Swing显示
拥有一个只查询结果并将其加载到数据结构中的对象
另一个只接受数据结构并将其加载到Swing UI中进行显示
您的应用程序将使数据库与用户界面分离。您的测试和调试过程将更加轻松
发布更多的代码,也许一条错误消息会帮助我们比猜测更快地帮助您
在我看来,结果集中的列上的循环是可疑的。它们从1到列数运行,但从2开始。为什么?如果您的查询有五个或更少的列,您将在那里遇到问题。这是一个糟糕的设计。您将UI和数据库混合在一起。如果您从Swing更改为web UI,您的代码将不好。这是错误的这种方式也更难测试和调试 将问题分为两部分:数据库访问和Swing显示 拥有一个只查询结果并将其加载到数据结构中的对象 另一个只接受数据结构并将其加载到Swing UI中进行显示 您的应用程序将使数据库与用户界面分离。您的测试和调试过程将更加轻松 发布更多的代码,也许一条错误消息会帮助我们比猜测更快地帮助您
在我看来,结果集中的列上的循环是可疑的。它们从1到列数运行,但您从2开始。为什么?如果您的查询有五列或更少的列,则会出现问题。您确定您的结果集包含任何行吗
您确定在调用
addRow
之前没有发生异常吗?您在一个try块中,catch块做什么?您确定您的结果集包含任何行吗
你确定在调用
addRow
之前没有发生异常吗?你在一个try块中,catch块是做什么的?我们不了解你遇到的问题,也许你应该分享一下。@hourted85请搜索resultsetablemodel,TableFromDatabase,然后阅读示例和:-)@Woot4Moo+1:-)@Woot4Moo:我需要从数据库表中获取行,并将数据显示到表中。为了实现这一点,我创建了一个DefaultTableModel对象,以便提供一个tableModel。我使用二维数组来存储表中的每一行,而while循环就是这样做的。然后dtm.addRow(datiEventi[I])
应该让数据显示在表中,但它不起作用。我们不了解您遇到的问题,也许您应该与我们共享。@闹鬼85请搜索ResultSetTableFromDatabase中的ResultsetTableModel,在此之前阅读示例和:-)@Woot4Moo+1:-)@Woot4Moo:我需要从我的数据库表中获取行,并将数据显示到表。为了实现这一点,我创建了一个DefaultTableModel对象,以便提供一个tableModel。我使用一个二维数组来存储表的每一行,而while循环就是这样做的。然后dtm.addRow(datiEventi[I])
应该让数据显示在表中,但它不起作用。@OMG Ponies将视图与DAO分离并不意味着它的MVC。我认为MVC这个词在它不存在的时候使用得太频繁了。此外,MVC还有一些现代的替代品,如果您感兴趣,可以看看这篇Martin Fowler文章:。另请参阅@OMG Ponies将视图与DA分离O并不意味着它的MVC。我认为MVC这个词在它不是MVC的时候使用得太频繁了。此外,MVC还有很多现代的替代品,如果您感兴趣,可以看看这篇Martin Fowler的文章:。另请参阅