当前位置: 首页 > 知识库问答 >
问题:

.@在尝试使用java和MySQL从数组返回时返回[重复]

鱼浩荡
2023-03-14

我在Java中有一个与MySQL连接的多类项目,我可以与这个SQL数据库建立连接,但当我试图将它读入数组时,它得到的是废话,而不是所请求的信息。我做错了什么?

public DVDCollection getDVDs(int sortOrder)
{
    DVDCollection dvdcollection = new DVDCollection();
    Connection conn = getConnection();
    if (conn != null)
    {            
        String sql;
        if (sortOrder==1)
        {
            sql = "SELECT * FROM dvds ORDER BY title";
        }
        if (sortOrder==2)
        {
            sql = "SELECT * FROM dvds ORDER BY dvds.id";
        }
        else
        {
            sql = "SELECT * FROM dvds ORDER BY dvds.year";
        }
    
        try
        {
            //PreparedStatement ps1 = conn.prepareStatement(sql); 
            ResultSet rs1 = conn.prepareStatement(sql).executeQuery();
            while (rs1.next()) //get each row from the resultset
            {   //create an DVD object to add to ArrayList
                dvdcollection.addDVD(new DVD(rs1.getInt("id"), rs1.getString("title"), rs1.getInt("year"), rs1.getBoolean("favourite")));                          
            }          
            rs1.close();
            //ps1.close();
            closeConnection(conn);
            return dvdcollection;
        }
        catch (SQLException ex)
        {
            System.out.println(ex);     
            return dvdcollection;                    
        } 
        finally
        {
            closeConnection(conn);
        }
    }
    else
    {
        return dvdcollection;
    }
        
}

它在sql定义下面出现了一条弯曲的线条,说它们从来没有被读取过,但我就是不明白为什么会这样!它构建得很好,可以看到数据库中有行,但它返回以下内容:

显示“java2assignment3.dvd@5e0010bc”和“java2assignment3.dvd@1168d798”的GUI图像:

DVD dvd = service.addDVD(newDVD);
if (dvd != null)
{
    txtResults.setText(txtTitle.getText() + " sucessfully added");
    parent.loadData();
}
else
{
    txtResults.setText("Application error, DVD not added, please contact IT Administration");                        
}

共有1个答案

斜淳
2023-03-14

用于从数据库中获取dvd列表的代码很好,但您需要查看dvd对象以及它是如何呈现的。

从附带问题的图片中看不出GUI是什么,但是DVD的显示方式与Java默认的tostring()方法一致。

因此,解决此问题的一种方法是重写dvd类上的tostring()方法:

class DVD {
    // the usual stuff, getters, setters, member variables
    @Override
    public String toString() {
        return id + " " + title;
    }
}
static stringForList(DVD dvd) {
    return dvd.getId() + " " + dvd.getTitle();
}
yourList.add(stringForList(dvd))

声明YourList,以便它接受Strings。

 类似资料:
  • 问题内容: 我绝对不知道为什么这段代码不会返回数组…我觉得我的编译器有问题: 该代码什么也不返回。这让我疯狂! 问题答案: 它正在返回数组,但是所有返回的东西(包括Array)所做的只是听起来像:返回值。在您的情况下,您将获得的值,它恰好是一个数组(可以是任何数组,您仍然会遇到此问题),然后将其放在那里。 当函数返回任何内容时,它实际上是用返回值替换调用它的行(在您的情况下:)。因此,您的方法实际

  • 我有一个返回< code>List的方法。现在我想知道如何正确放置< code>try/catch块。如果我将< code>return语句放在< code>try中,我会得到错误 并非所有代码路径都返回值 如果我放置在之后(就像我目前所做的那样),即使在之后,它也会返回。那么最好的方法应该是什么? 方法如下:

  • 首先我知道这是一个重复的问题。但我已经搜索并尝试从谷歌上列出的stackoverflow到quora,但仍然无法解决Get方法仍然返回null的问题。 这是我的类登录模型。com包下的java。你好模型 这是我的登录视图。com包下的java。你好看法 我想从menuView调用我的用户名。com包下的java。你好登录成功后查看 根据我在loginModel中调用Get方法时的问题,messag

  • 如您所见,它将参数和的和保存在变量中,然后将包含它们的和的eax寄存器保存在变量中,就像函数返回值一样。 这样做是因为函数是用返回值定义的吗?

  • 我已经创建了一个方法,它接受一个hashmap作为输入,将值转换成一个数组,使用气泡排序对数组进行排序,然后我希望它使用排序后的值从初始hashmap中选择前N个索引键。我知道这不是最好的方法,但这是好的(我写了这个方法作为一个替代)。 该方法返回null,因为maxItems为空,并且“System.out.println(Entry.GetKey());”不会将任何内容打印到控制台。 谢谢你的

  • 问题内容: 在过去的两天左右,我一直在将函数转换为mysqli。我遇到了一个问题。我有一个函数,该函数从数据库返回一个包含行的数组。但是,我希望数组包含多行而不是一行。另外,我将如何回显各个帖子。这是我失败的尝试,仅在阵列中显示一行。 在这里,我试图显示数据。 问题答案: 您必须使用循环来一次获取所有内容: