我想通过 JSP 使用 prepare 语句从 oracle 10g 表中检索多行。
问问题
833 次
1 回答
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) {}
%>
于 2012-04-20T12:47:39.227 回答