x:select アクションは、リレーショナル・データベースの中の照会を実行するために使用するものです。 照会により空でない結果セットが作り出された場合は、 その行がアプリケーション・サーバー・マシン上のメモリーのキャッシュに入れられます。 行の 1 つ、すなわち当初の最初の行は常に現在行とみなされます。
このアクションを使用して DBSelect Bean を作成します。 この Bean には、名前が id 属性の中に指定されている変数を使用してアクセスすることができます。
JSP アクションは、DBSelect Bean の基本関数を利用するために提供されているものです。 x:nextRow および x:previousRow を使用して、結果セットの中の他の行に移ることができます。 x:updateRow、x:deleteRow、および x:insertRow アクションを使用して、 追加 SQL ステートメントを書かなくても結果セットの中の行を変更することができます。 x:getColumn および x:setColumn アクションを使用して、結果セットの中の桁値にアクセスすることができます。 SQL ステートメントにパラメーターがある場合は、x:getParameter および x:parameter アクションを使用してパラメーターにアクセスすることができます。
DBSelect Bean のメソッドは全部、スクリプトレットを使用して実行することもでき、 そのプロパティーの全部に標準の jsp:getProperty および jsp:setProperty アクションを使用してアクセスすることもできます。
<x:select id = "name" scope = "page|request|session" connectionSpec = "connectionSpec_id" connectionSpecRef = "connectionSpecRef" maxFieldSize = "numberOfBytes" maxRows = "numberOfRows" distinctTypesEnabled = "true|false" timeOut = "seconds" readOnly = "true|false" nullToken = "string" trace = "true|false" > <x:sql> </x:sql> <x:parameter parmName = "name" position = "number" type = "sqltype" mode = "in|out|inout" value = "parmValue" /> </x:select>
x:select アクションには以下の属性があります。
参照アクションにより、データベースへの接続に必要な情報が提供されます。 このアクションが x:batch アクションの本体内部で発生する場合は、この属性を省略してください。 その場合は x:batch アクションの中で識別された connectionSpec アクションが使用されます。 この属性を両方の場所で指定した場合、この属性にはエラーのフラグが付けられます。
connectionSpec または connectionSpecRef のいずれかを指定することができますが、両方を指定することはできません。
x:select アクションは、その本体内に以下のタグをもつことができます。
以下のアクションは、名前が select1 で、そのスコープがセッションである DBSelect Bean を作成するものです。 このアクションでは、conn1 の中の情報を使用してデータベースへの接続が行われ、Select ステートメントが実行されます。 このステートメントの結果セットには、EMPLOYEE テーブルからの従業員番号と従業員名が含まれます。 Select には、パラメーターは含まれません (データベースであるという点から) が、これに代えて要求オブジェクトからのユーザー入力が含まれています。
<x:select id="select2" scope="session" connectionSpec="conn1"> <x:sql> SELECT EMPNO, EMPNAME FROM EMPLOYEE WHERE WORKDEPT = ? </x:sql> <x:parameter position="1" type="VARCHAR" value='<%= request.getParameter("department") %>' /> </x:select>
以下のアクションでは、名前 select3 をもつ DBSelect Bean が作成されます。 この例は前の例と同じようなものですが、この例ではパラメーターが position (位置) ではなく、name (名前) によって識別されています。
<x:select id="select3" scope="session" connectionSpec="conn1"> <x:sql> SELECT EMPNO, EMPNAME FROM EMPLOYEE WHERE WORKDEPT = :dept </x:sql> <x:parameter parmName="dept" type="VARCHAR" value='<%= request.getParameter("department") %>' /> </x:select>
以下のアクションでは、前の 2 例からの結果セットの中の行が繰り返し反復され、 桁値が x:getColumn アクションを使用して要求出力に書き出されます。 x:repeat アクションの詳細については<x:repeat>を、x:getColumn アクションの詳細については<x:getColumn>を参照してください。
<table border="1" width="300" height="100"><tbody> <tr> <td>Employee number:</td> <td>Name:</td> </tr> <x:repeat name="select1" over="rows"> <tr> <x:repeat over="columns"> <td><x:getColumn /></td> </x:repeat> </tr> </x:repeat>
以下のアクションでは、結果セットの中の行が繰り返し反復され、 桁値が x:getColumn アクションを使用して要求出力に書き出されます。 x:repeat アクションの詳細については<x:repeat>を、x:getColumn アクションの詳細については<x:getColumn>を参照してください。
<table border="1" width="300" height="100"><tbody> <tr> <td>Employee number:</td> <td>Name:</td> </tr> <x:repeat name="select1" over="rows"> <tr> <td><x:getColumn colName="EMPNO"/></td> <td><x:getColumn colName="EMPNAME"/></td> </tr> </x:repeat></tbody></table>