如何通过jsp页面从oracle 10g表中检索多行

时间:2012-04-20 12:31:36

标签: oracle oracle10g

我想使用prepare语句通过JSP从oracle 10g表中检索多行。

1 个答案:

答案 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();

请从以下链接http://oracle.ittoolbox.com/groups/technical-functional/oracle-apps-l/how-to-connect-to-database-in-jsp-using-jdbc-drivers-to-oracle-database-1569382

中找到以下示例代码
<%@ 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) {} 
%>