Java 试图从第一个查询中获取一个值,并在第二个查询中使用它来获得特定的结果。好的,accesslevel是从第二个查询中引用的,因此它确实会得到执行。您可以重新检查查询列名与实际db列名吗?错误来自数据库,因此您的第二个PreparedStatement肯定会运
Java 试图从第一个查询中获取一个值,并在第二个查询中使用它来获得特定的结果。好的,accesslevel是从第二个查询中引用的,因此它确实会得到执行。您可以重新检查查询列名与实际db列名吗?错误来自数据库,因此您的第二个PreparedStatement肯定会运,java,sql,Java,Sql,试图从第一个查询中获取一个值,并在第二个查询中使用它来获得特定的结果。好的,accesslevel是从第二个查询中引用的,因此它确实会得到执行。您可以重新检查查询列名与实际db列名吗?错误来自数据库,因此您的第二个PreparedStatement肯定会运行。表“characters”中的列“accesslevel”不存在,这是数据库所说的。可能拼写为“access_level”?不,如果我删除rSet.getInt(“accesslevel”);我在“char_name”处得到了错误,如果我也
试图从第一个查询中获取一个值,并在第二个查询中使用它来获得特定的结果。好的,accesslevel是从第二个查询中引用的,因此它确实会得到执行。您可以重新检查查询列名与实际db列名吗?错误来自数据库,因此您的第二个PreparedStatement肯定会运行。表“characters”中的列“accesslevel”不存在,这是数据库所说的。可能拼写为“access_level”?不,如果我删除rSet.getInt(“accesslevel”);我在“char_name”处得到了错误,如果我也删除了这一个,我会在“online”中得到它。第二份准备好的报表有点问题。是的,这是我需要的,但我的“计数”列在项目处。这是角色拥有的第57项的数量。我正在尝试获取项目的前10个计数_id=57并对它们进行排序desc@GeorgeTagas:您可以使用“select in”语句,而不是内部联接。查看更新后的答案作为示例…是的,我对它做了一点修改以供使用,效果非常好。谢谢你,伙计@乔治塔加斯:很酷,很高兴听到这个。是的,这是我需要的,但我的“计数”是项目栏。这是角色拥有的第57项的数量。我正在尝试获取项目的前10个计数_id=57并对它们进行排序desc@GeorgeTagas:您可以使用“select in”语句,而不是内部联接。查看更新后的答案作为示例…是的,我对它做了一点修改以供使用,效果非常好。谢谢你,伙计@乔治塔加斯:很酷,很高兴听到这个。
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
{
PreparedStatement stm = con.prepareStatement("SELECT count,owner_id FROM items WHERE item_id=57 order by count desc limit 10");
ResultSet rSet = stm.executeQuery();
while (rSet.next())
{
int owner_id = rSet.getInt("owner_id");
int count = rSet.getInt("count");
if (count == 0)
{
continue;
}
PreparedStatement stm1 = con.prepareStatement("SELECT char_name,accesslevel,online FROM characters WHERE obj_Id=" + owner_id);
ResultSet rSet1 = stm1.executeQuery();
while (rSet1.next())
{
int accessLevel = rSet.getInt("accesslevel");
if (accessLevel > 0)
{
continue;
}
String pl = rSet.getString("char_name");
int online = rSet.getInt("online");
String status = online == 1 ? "<font color=\"00FF00\">Online</font>" : "<font color=\"FF0000\">Offline</font>";
sb.append("<tr><td>"+ pl +"</td><td>"+ count +"</td><td>"+ status +"</td></tr>");
}
}
}
catch (Exception e)
{
_log.log(Level.SEVERE, "Error", e);
}
private String test() throws SQLException {
StringBuilder sb = new StringBuilder();
int count = 0;
try (Connection con = L2DatabaseFactory.getInstance().getConnection()) {
try (PreparedStatement stm1 = con.prepareStatement(
"SELECT char_name,accesslevel,online FROM characters WHERE obj_Id in (SELECT owner_id FROM items WHERE item_id=57 order by count desc limit 10)")) {
ResultSet rSet = stm1.executeQuery();
while (rSet.next()) {
count++;
int accessLevel = rSet.getInt("accesslevel");
if (accessLevel > 0) {
continue;
}
String pl = rSet.getString("char_name");
int online = rSet.getInt("online");
String status = online == 1 ? "<font color=\"00FF00\">Online</font>" : "<font color=\"FF0000\">Offline</font>";
sb.append("<tr><td>" + pl + "</td><td>" + count + "</td><td>" + status + "</td></tr>");
}
}
} catch (Exception e) {
Logger.getLogger("test").log(Level.SEVERE, "Error", e);
}
return sb.toString();
}