Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数据库填充表_Java_Oracle_Swing_Jtable - Fatal编程技术网

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的文章:。另请参阅