Java 值不断循环

Java 值不断循环,java,sql,database,jsp,foreach,Java,Sql,Database,Jsp,Foreach,这就是我所做的。我想在每个目录下获得股票ID、股票名称和股票价格。但不幸的是,它一直在循环。我的意思是,它假设只有S0001 XXX 19.90,但是它有S0001 ABC 19.90,S0002 ABC 19.90,S0003 ABC 19.90,S0004 ABC 19.90。然后它将返回S0001,ABC将更改为数据库中的下一个值。这意味着我的股票名称循环4次,而我的股票价格循环12次 <sql:setDataSource url="jdbc:derby://localhos

这就是我所做的。我想在每个目录下获得股票ID、股票名称和股票价格。但不幸的是,它一直在循环。我的意思是,它假设只有S0001 XXX 19.90,但是它有S0001 ABC 19.90,S0002 ABC 19.90,S0003 ABC 19.90,S0004 ABC 19.90。然后它将返回S0001,ABC将更改为数据库中的下一个值。这意味着我的股票名称循环4次,而我的股票价格循环12次

    <sql:setDataSource url="jdbc:derby://localhost:1527/healthdb;user=nbuser;password=nbuser" driver="org.apache.derby.jdbc.ClientDriver"  
                       var="Derbydata"/>  
<sql:query sql=" SELECT stockid FROM STOCKS" dataSource="${Derbydata}" var="STOCKS" />
<sql:query sql=" SELECT stockname FROM STOCKS" dataSource="${Derbydata}" var="STOCKS1" />
<sql:query sql=" SELECT stockprice FROM STOCKS" dataSource="${Derbydata}" var="STOCKS2" />
 <table border="1">
                <thead>
                    <tr><th>
                 Stock ID   
                </th>
                <th>
                Stock Name    
                </th>
                <th>
                    Stock Price
                </th>
                    </tr>
                </thead>
                <tbody>

                         <c:forEach var="row3" items ="${STOCKS2.rowsByIndex}">
                             <c:forEach var="row2" items ="${STOCKS1.rowsByIndex}">
                             <c:forEach var="row1" items="${STOCKS.rowsByIndex}">
                <tr>
                    <td>
                 <c:out value="${row1[0]}"/>
                    </td>

                    <td> 
                        <c:out value="${row2[0]}"/>
                    </td>

                    <td>
                        <c:out value="${row3[0]}"/>
                    </td>
                </tr>

股票ID
股票名称
股价

只需将查询更改为所需字段,并使用索引或0 1 2

<sql:query sql=" SELECT stockid,stockname,stockprice FROM STOCKS" dataSource="${Derbydata}" var="STOCKS" />
                       <c:forEach var="row1" items="${STOCKS.rowsByIndex}">
            <tr>  
                <td>
             <c:out value="${row1[0]}"/>
                </td>
                <td>             <c:out value="${row1[1]}"/></td>

                <td>             <c:out value="${row1[2]}"/></td>

            </tr>


在我看来,您的查询和foreach逻辑确实错误。您似乎发出了3个查询。您应该为要显示的所有三个字段发出一个查询。让它选择*FROM stocks Jon提到,您应该使用一个查询,此查询的结果是一个光标。循环遍历这个游标,对于每个字段,从游标中的每一行提取值。那么,行和列呢?