prepare ステートメントを使用して、JSP を介して Oracle 10g テーブルから複数の行を取得したいと考えています。
1 に答える
次のJSPコードは、プリペアドステートメントを作成します。
String myquery = "SELECT * FROM EMPLOYEES WHERE DEPARTMENT = ?";
PreparedStatement mystatement = connection.prepareStatement(myquery);
最初の行は、SQLステートメントをmyqueryという文字列変数に格納し、疑問符(?)がSQL変数値のプレースホルダーとして機能します。2行目は、mystatementというプリペアドステートメントオブジェクトを作成します。
次に、次のようにSQL変数に値を割り当てます。
mystatement.setString(1, request.getParameter("myURLparam"));
setStringメソッドは、変数に値を割り当て、2つの引数を取ります。最初の引数は、影響を受ける変数をその位置(ここでは、SQLステートメントの最初の位置)によって指定します。2番目の引数は、変数の値を指定します。この例では、値はページに渡される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) {}
%>