请原谅我在正确命名这个问题时缺乏创造力。
嗨,我花了过去 3 个小时试图解决这个问题,我想我已经解决了,但它的解决方案仍然让我望而却步。我有这个非常简单的代码。
Statement stmt = db.getStatement();
ResultSet queryResult = stmt.executeQuery("SELECT * FROM users");
while(queryResult.next()) {
username = queryResult.getString("username");
password = queryResult.getString("password");
privilege = queryResult.getInt("privilege");
queryResult = stmt.executeQuery("SELECT * FROM division");
while(queryResult.next()) {}
users.add(new User(username, password, privilege));
}
现在,这段代码被简化以说明我的代码中的问题所在。显然,我没有一个什么都不包含的while循环。
我开始意识到,每当我想从数据库中获取一些东西时,我只能在一个循环中使用结果集。如果我写一个“嵌套结果集循环”,我会得到“操作...结果集关闭”、“找不到列'用户名'”或其他一些错误。
我的 DAO 代码中有很多这些嵌套的结果集循环,用于从数据库中获取所有内容。由于我在 MySQL 方面不是那么强,所以这是一个简单的解决方案(我只剩下很少的时间来做这个程序)......因为我曾经在 PHP 中做过类似的事情。
我并不是说这段代码是好的设计,但是因为时间的关系,我现在真的不太关心好的类设计。因此,无论设计选择如何,您想到的任何解决方案都受到欢迎。
另一种解决方案是将所有内容拆分为单个循环,因为这往往会起作用(非常简单)。但这意味着要修改很多代码,我希望这是备用计划。