mysql - JSP 数据库结果未正确显示

标签 mysql html database jsp jstl

我有一个 JSP MySQL 查询

<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

这将返回四列。 我尝试使用 AS 重命名结果中的列,但是在迭代结果时

<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>

加载页面时,dbESTidLibNameDesc 列为空。

我询问 ${libraries.columnNames} 并发现查询中的 AS 语句没有重命名列,它们仍然是 LAValue。 ${libraryResults.LAValue} 仅返回描述。有关如何填充此表的任何帮助吗?

最佳答案

您不需要在 SQL 中的列别名周围使用双引号 - 这可能会使 jdbc 驱动程序感到困惑。另外,为什么 <sql-query> 中的中断标签?

列别名应该起作用。但是,如果问题仍然存在,一种可能的解决方法是迭代每行中的列:

<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>

也就是说,真正的解决方案当然是使用 MVC 框架,这样您就不必将查询嵌入到 JSP 中。

关于mysql - JSP 数据库结果未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1189125/

相关文章:

mysql - 让 --lines-terminated-by 在 mysqldump 中工作

javascript - 屏幕调整大小功能 - Jquery

html - 1rem 并不总是等于 16px

c# - 难以将数据从 C# 窗体插入数据库

mysql - SQL 中的多个 LIKE

php - Joomla,如何在最新模块中显示类别名称

mysql - 如何按列值限制查询

html - 截断 td 内的跨度

ajax - 看似 'live'数据驱动的网站使用了哪些技术?

php - 自动将新条目添加到表 codeigniter 中