使用JSP从Oracle获取数据

时间:2012-12-23 05:34:15

标签: jsp

我想使用JSP从Oracle获取数据。应从表单文本框传递多个参数。

<form method="post" action="num_post.jsp">
Enter Number: <input name="num" type="text" id="num" />

<input type="submit" name="Submit" value="Submit" />
</form>

在文本字段中,我想传递多个参数,例如123,456,789,896等。

现在在num_post.jsp中我有这个代码来请求JSP中的传递参数。

<%
 String[] num=request.getParameterValues("num");

 int i=0;

 for(i=0;i<num.length;i++)
 {
      out.println("number Elements       :"+num[i]+"<br/>");
 }
%>

现在我想使用数组参数从Oracle获取数据,例如:num[i]

<%@page import="java.sql.*"%>
<%@ page import = "java.io.*"%>
<%
 Class.forName("oracle.jdbc.OracleDriver");
 Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
 Statement st=con.createStatement();
 String sql = "SELECT * from jha where num IN '"+num[i]+"'" ;
 ResultSet rs = st.executeQuery(sql);
 %>

这会引发ArrayOutOfBound例外。

1 个答案:

答案 0 :(得分:0)

试试这个

String[] num=(request.getParameter("num").toString()).split(",");

而不是

String[] num=request.getParameterValues("num");

<强> ===== UPDATE =====

正如您指定的那样, ArrayIndexOutOfBound ,这意味着您尝试从阵列中访问索引。而且,很明显

String[] num=(request.getParameter("num").toString()).split(","); // let say array size would be 4
int i=0;  // i initialized by 0

 for(i=0;i<num.length;i++)
 {
      out.println("number Elements       :"+num[i]+"<br/>"); 
 }
  // when control reached here, the value of i will be 4 (which is out of index)

现在,在您的查询中,您正在尝试访问4索引元素,该元素不存在。

"SELECT * from jha where num IN '"+num[i]+"'"   // here value  of i is 4

这就是你得到 ArrayIndexOutOfBound 的原因。得到了???

还有一件事,您在那里编写的查询适用于仅检查数组中的一个值。因此,您需要更改查询。它不会告诉你,你的预期输出。