我在oracle数据库中有一个名称类别的表,在这个类别表中我有列c_nm,数据是category1,category2,category3,......等等 我希望所有这些数据都存储在我的jsp页面上的数组或字符串中。 例如:
<%@ include file"connection.jsp"%> // for connecting to data base
<%! String S1[]= new String[]%> declare a string
<%
rs=stat.executeQuery("select * from category ");
while(rs.next()){
s1[]=rs.getString(c_nm);
}
%>
这是正确的编码还是应该选择其他方法来执行此操作?
答案 0 :(得分:0)
如果您需要类别列表,则需要循环搜索结果,然后将其添加到List
。你会做一个清单,因为你不需要事先知道你有多少类别。
rs=stat.executeQuery("select * from category ");
List<String> categories = new ArrayList<>();
while (rs.next()) {
categories.add(rs.getString(c_nm));
}
然后,如果确实需要,您可以将列表转换为数组:
s1 = categories.toArray(new String[0]);
如果您对我传递零长度数组的原因感到困惑,请进一步研究:What to pass to the Arrays instance method toArray(T[] a)
method?。
其他需要注意的事项:
S1
与s1
不同,请参阅%!
部分。s1[]=
而只是s1=
- 请参阅How to initialize an array in Java? = new String[10]
vs new String []
;
)。无论如何,所有这些更正都应该是这样的:
<%! String [] s1 = new String[0]; %>
我们可以指定null,但我不知道其余的代码是否正常。这似乎是目前最谨慎的事情。
现在,由于您使用的是List
和ArrayList
,因此您需要import sections:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
然后,如果你真的想对这些类别做些什么,你会想要写一些类似的东西:
<% for (String category:categories) { %>
<p><%=category%></p>
<% } %>
请注意,我甚至没有使用s1
或S1
(无论你称之为原生数组),而是直接使用了categories
List
(所以确实无需进行转换。)
请注意,我为您提供的解决方案有很多话要说,但我认为这是最简单的解决方案。