我正在使用一个在Apache Tomcat上运行的Web应用程序,并将Mysql数据库作为后端
我想在Where子句
中检索特定列的多行例如如果我从xyz中选择*,其中type = abc
我应该获得所有类型为abc的行。
问题:
我使用JDBC连接来实现这一点,但只返回匹配where条件的第一行而不是所有行(即使多行符合数据库中的条件)
请帮我解决这个问题
代码:
<%@ page import="java.sql.*" %>
<html>
<head><link href="style.css" rel ="stylesheet" type="text/css"></head>
<body bgcolor="white" >
<div id="container">
<div id="header">
<img src="logo.jpg">
<div class ="horiztext"><p> Order Tracker</p></div>
</div>
</div>
<br>
<img src="banner.jpg" width="1500 " height="5"><br>
<% if(session.getAttribute("username") !=null)
{
%>
<div id="navbar">
<ul>
<li><a href="newoder.jsp">New Order</a></li>
<li><a href="updateorder.jsp">Update Order</a></li>
<li><a href="trackorder.jsp">Track Order</a></li>
<li><a href="trackdelay.jsp">Track Delay</a></li>
<li><a href="vieworder.jsp">View Database</a></li>
<li><a href="delete.jsp">Delete Order</a></li>
<li><a href="logout.jsp">Logout</a></li>
</ul>
</div>
<br>
<br>
<form>
<TABLE cellpadding="15" border="1" style="background-color: #ffffcc;">
<%
String ProductNamez=request.getParameter("ProductName");
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3307
/test","root", "root");
Statement st=conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM inventory WHERE ProductName = '"+
ProductNamez +"' ");
if(rs.next()){
%>
<tr>
<tr><th>Serial No</th>
<th>Product Name</th>
<th>Product Type</th>
<th>Model</th>
<th>Make</th>
<th>License / Voucher</th>
<th>Location</th>
</tr>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getString(4)%></td>
<td><%=rs.getString(5)%></td>
<td><%=rs.getString(6)%></td>
<td><%=rs.getString(7)%></td>
</tr>
<%
}
%>
</table>
</form>
<%
}
else { %>
you are not logged in click here to <a href="eric.jsp"><b>login</b></a>
<%
} %>
</body>
</html>
答案 0 :(得分:3)
你会想要
while (rs.next()){
而不是
if (rs.next()){
答案 1 :(得分:0)
这是因为你只需要if(rs.next()){
,所以只显示第一行。
你应该这样做
while (rs.next()) {
[...]
}