我想使用prepare语句通过JSP从oracle 10g表中检索多行。
答案 0 :(得分:0)
以下JSP代码创建一个预准备语句:
String myquery = "SELECT * FROM EMPLOYEES WHERE DEPARTMENT = ?";
PreparedStatement mystatement = connection.prepareStatement(myquery);
第一行将SQL语句存储在名为myquery的字符串变量中,并带有问号(?)作为SQL变量值的占位符。第二行创建一个名为mystatement的预准备语句对象。
接下来,为SQL变量赋值,如下所示:
mystatement.setString(1, request.getParameter("myURLparam"));
setString方法将值赋给变量并接受两个参数。第一个参数按位置指定受影响的变量(此处为SQL语句中的第一个位置)。第二个参数指定变量的值。在此示例中,该值由传递给页面的URL参数提供。
注意:必须使用不同的方法将非字符串值分配给SQL变量。例如,要为变量赋值,您可以使用mystatement.setInt()方法。
最后,您生成记录集,如下所示:
ResultSet myresults = mystatement.execute();
中找到以下示例代码
<%@ page import="java.io.*, java.util.*, java.sql.*"%>
<%@ page import="oracle.jdbc.driver.OracleConnection" %>
<%
OracleConnection conn1 = null;
ResultSet getCountRs = null;
PreparedStatement getCountStmt = null;
try{
conn1 = (OracleConnection)TransactionScope.getConnection();
getCountStmt = conn1.prepareStatement("SELECT
PROMPT,FUNCTION_ID,SUB_MENU_ID FROM FND_MENU_ENTRIES_VL WHERE MENU_ID
=:1 and prompt is not null");
getCountStmt.setInt(1,pMenuid);
getCountRs = getCountStmt.executeQuery();
while(getCountRs.next())
{
prompt[x]=getCountRs.getString(1);
function_id[x]=getCountRs.getInt(2);
submenu_id[x]=getCountRs.getInt(3);
x++;
}
}
catch(exception e) {}
%>