从oracle检索数据



我在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区分大小写,S1s1不同,请参阅您的%!部分
  • 不是s1[]=,而只是简单的s1=-请参阅如何在Java中初始化数组
  • 创建数组时需要指定数组的大小。。。即= new String[10]new String []
  • 我相信您<%!…%>中的陈述仍然需要以分号(;)结尾

不管怎么说,经过所有这些修正,它可能应该是这样的:

<%! String [] s1 = new String[0]; %>

我们本可以指定null,但我不知道其余的代码是否可以。这似乎是目前最谨慎的做法。

现在,因为您使用的是ListArrayList,所以需要导入部分:

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>

然后,如果你真的想对这些类别做点什么,你会想写一些类似的东西:

<% for (String category:categories) { %>
<p><%=category%></p>
<% } %>

请注意,我甚至没有使用s1S1(无论您称之为本机数组),而是直接使用categories List(因此实际上不需要进行转换)。

请注意,关于我为您提供的解决方案,还有很多要说的,但我认为它是直接回答您问题的最简单的解决方案。

最新更新