我想使用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
例外。
答案 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 的原因。得到了???
还有一件事,您在那里编写的查询适用于仅检查数组中的一个值。因此,您需要更改查询。它不会告诉你,你的预期输出。