2009-07-27 4 views
0

Ich habe eine JSP MySQL-Abfrage

JSP DataBase Ergebnis nicht richtig angezeigt

<sql:query var="libraries" dataSource="jdbc/ArabiTagOnline"><br> 
    SELECT l.LibraryId, v1.LAvalue AS "dbESTid", v2.LAValue AS "LibName", v3.LAValue AS "Desc" 
    FROM ((Library l LEFT JOIN LibAttrValue v1 ON l.LibraryId = v1.LibraryId AND v1.AttributeId = 1) 
    LEFT JOIN LibAttrValue v2 ON l.LibraryId = v2.LibraryId AND (v2.AttributeId = 2 OR v2.AttributeId IS NULL)) 
    LEFT JOIN LibAttrValue v3 ON l.LibraryId = v3.LibraryId AND (v3.AttributeId = 6 OR v3.AttributeId IS NULL) 
<\sql:query 

Diese vier Spalten zurückgibt. Ich habe versucht, die Spalten in den Ergebnissen mit AS umbenennen, aber wenn sie über die Ergebnisse

<c:forEach var="libraryResults" items="${libraries.rows}"> 
    <tr> 
     <td>${libraryResults.Libraryid}</td> 
     <td>${libraryResults.dbESTid}</td> 
     <td>${libraryResults.LibName}</td> 
     <td>${libraryResults.Desc}</td> 
    </tr> 
</c:forEach> 

Iterieren Wenn Laden der Seite, die Spalten dbESTid, LibName und Desc sind leer.

Ich fragte ${libraries.columnNames} und fand heraus, dass die AS-Anweisung in meiner Abfrage die Spalten nicht umbenannte, sie sind alle noch LAValue. ${libraryResults.LAValue} gibt nur Desc zurück. Irgendwelche Hilfe, wie ich diesen Tisch bevölkern kann?

Antwort

2

Sie brauchen keine doppelten Anführungszeichen um Spaltenaliase in Ihrem SQL - das könnte den jdbc-Treiber verwirren. Auch warum das Break-Tag innerhalb der <sql-query>?

Spalte Aliasing sollte arbeiten. Wenn jedoch das Problem einer möglichen Abhilfe weiterhin besteht ist über Spalten in jeder Zeile iterieren:

<c:forEach var="libraryResults" items="${libraries.rows}"> 
    <tr> 
    <c:forEach var="column" items="${libraryResults}"> 
     <td><c:out value="${column.value}"/></td> 
    </c:forEach> 
    </tr> 
</c:forEach> 

Das heißt, die echte Lösung ist natürlich, ein MVC-Framework zu verwenden, so dass Sie nicht zu Betten Sie Ihre Abfragen in JSP ein.

Verwandte Themen