我正在尝试执行一个简单的查询,其中三个表被连接以创建一个表。我一直在试图弄清楚为什么我没有得到任何结果。
这是我的查询:
"SELECT b.band_naam, p.pod_omschr"
+ " FROM bands b"
+ " JOIN bandsperfestival bf ON b.band_id = bf.band_id"
+ " JOIN podia p ON bf.pod_id = p.pod_id"
我正在尝试在 Java 中执行此操作,因此引用了引号。
表格如下所示:
乐队
Bandsperfestival(桥牌桌)
足底亚
有人能发现我的错误吗?
这里有一些更多的代码要求:这是在 <% 和 %> 标记内
//ResultSet aanmaken voor alle groepen van op het festival
connectie.voerQueryUit("SELECT b.band_naam, p.pod_omschr"
+ " FROM bands b"
+ " JOIN bandsperfestival bf ON b.band_id = bf.band_id"
+ " JOIN podia p ON bf.pod_id = p.pod_id", lijstParams);
ResultSet bands = connectie.haalResultSetOp();
与另一个查询相同的方法可以完美地像这样工作:
//ResultSet aanmaken voor het gekozen festival
connectie.voerQueryUit("SELECT f.fest_id, f.fest_naam, f.fest_locatie, f.fest_datum, f.fest_duur, f.fest_einddatum, f.fest_url"
+ " FROM festivals f"
+ " WHERE f.fest_naam = ?", lijstParams);
ResultSet fest = connectie.haalResultSetOp();
fest.first();
在我的 html 中,我这样做:
<ul>
<% while (bands.next()) { %>
<li><%= bands.getString("band_naam") %></li>
<li>Podium: <%= bands.getString("pod_omschr") %></li>
<% } %>
</ul>
变量 connectie 是具有以下功能的类的实例:
public void voerQueryUit(String query, List<String> parameters)
{
try
{
if(parameters.size() > 0)
{
//Reden preparedStatement: geen SQL-Injectie!
prepStatement = connectie.prepareStatement(query);
//Lijst met parameters uitlezen om de preparedStatement op te vullen
for(int i=1; i<=parameters.size(); i++)
{
prepStatement.setString(i, parameters.get(i-1));
}
inhoudQuery = prepStatement.executeQuery();
}
else
{
statement = connectie.createStatement();
inhoudQuery = statement.executeQuery(query);
}
}
catch(Exception e)
{}
}
public ResultSet haalResultSetOp()
{
return inhoudQuery;
}
我知道这很有效,因为它已被多次使用。