我在oracle数据库中有一个名为category的表,在这个category表中我有列c_nm,数据是category1、category2、categray3。。。。。。等等我希望所有这些数据都存储在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);
}
%>
这是正确的编码还是我应该选择另一种方法来做这件事?
如果您想要类别列表,您需要循环查看结果,并将其添加到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]);
如果你对我为什么传递零长度数组感到困惑,请进一步研究:传递什么给Arrays实例方法toArray(T[] a)
方法?。
其他需要注意的事项:
- Java区分大小写,
S1
与s1
不同,请参阅您的%!
部分 - 不是
s1[]=
,而只是简单的s1=
-请参阅如何在Java中初始化数组 - 创建数组时需要指定数组的大小。。。即
= new String[10]
与new String []
- 我相信您<%!…%>中的陈述仍然需要以分号(
;
)结尾
不管怎么说,经过所有这些修正,它可能应该是这样的:
<%! String [] s1 = new String[0]; %>
我们本可以指定null,但我不知道其余的代码是否可以。这似乎是目前最谨慎的做法。
现在,因为您使用的是List
和ArrayList
,所以需要导入部分:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
然后,如果你真的想对这些类别做点什么,你会想写一些类似的东西:
<% for (String category:categories) { %>
<p><%=category%></p>
<% } %>
请注意,我甚至没有使用s1
或S1
(无论您称之为本机数组),而是直接使用categories
List
(因此实际上不需要进行转换)。
请注意,关于我为您提供的解决方案,还有很多要说的,但我认为它是直接回答您问题的最简单的解决方案。