<x:select>

x:select 조치는 관계형 데이터베이스에서 조회를 실행하기 위해 사용됩니다. 조회에서 비어 있지 않은 결과 세트가 생성된 경우, 행은 Application Server 시스템의 메모리에 캐시됩니다. 이 행 중 하나(초기에는 첫 번째 행)는 항상 현재 행으로 간주됩니다.

이 조치를 사용하면 id 속성에 이름을 지정한 변수를 사용하여 액세스할 수 있는 DBSelect Bean이 작성됩니다.

DBSelect Bean의 기본 기능을 사용할 수 있도록 JSP 조치가 제공됩니다. x:nextRowx:previousRow를 사용하여 결과 세트에서 다른 행에 위치시킬 수 있습니다. x:updateRow, x:insertRowx:deleteRow 조치를 사용하여 추가 SQL 문을 작성하지 않고 결과 세트에서 행을 변경할 수 있습니다. x:getColumnx:setColumn 조치를 사용하여 결과 세트의 열 값에 액세스할 수 있습니다. SQL 문에 매개변수가 있으면 x:getParameterx:parameter 조치를 사용하여 액세스할 수 있습니다.

DBSelect Bean의 모든 메소드도 scriptlet을 사용하여 실행할 수 있고 해당되는 모든 특성은 표준 jsp:getPropertyjsp: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 조치에는 다음과 같은 속성이 있습니다.

id
지정된 이름 공간에서 DBSelect Bean을 식별하기 위해 사용되는 이름으로, 해당되는 스크립팅 변수 이름이기도 합니다. 지정된 이름은 대소문자가 구분되며 현재 스크립팅 언어 변수 이름 지정 규칙을 준수해야 합니다.
scope
오브젝트가 정의되는 범위를 지정합니다. 기본값은 page입니다.
connectionSpec
x:dataSourceSpec 또는 x:driverManagerSpec 조치의 ID를 지정합니다. 값은 대소문자가 구분되며 범위 내에 있는 connectionSpec 조치와 일치해야 합니다.

참조된 조치는 데이터베이스와의 연결을 작성하는 데 필요한 정보를 제공합니다. x:batch 조치에서 식별된 connectionSpec 조치를 사용하는, x:batch 조치 본문 내에서 조치가 발생할 경우 이 속성을 생략하십시오. 두 위치 모두에 지정하면 오류 플래그가 표시됩니다.

connectionSpecRef
연결을 작성하는 데 필요한 정보를 확보하기 위해 사용할 DBConnectionSpec 오브젝트에 대한 참조를 지정합니다.

connectionSpec 또는 connectionSpecRef 중 하나를 지정할 수 있으며 둘 다 지정할 수는 없습니다.

maxFieldSize
결과 세트에서 열의 최대 크기를 바이트 단위로 지정합니다. 0 값은 최대값이 없음을 의미합니다. 기본값은 0입니다.
maxRows
캐시로 페치할 수 있는 최대 행 수를 지정합니다. 0 값은 최대값이 없음을 의미합니다. 기본값은 0입니다.
distinctTypesEnabled
사용자 정의(고유) 유형을 포함하는 결과 세트에 대해 삽입, 갱신 및 삭제를 사용하는지 여부를 지정합니다. 기본값은 False입니다.
timeOut
명령문을 실행할 수 있는 최대 시간(초)을 지정합니다. 기본값은 0이며 이는 최대값이 없음을 의미합니다.
readOnly
데이터 갱신이 허용되는지 여부를 지정합니다. true 값은 데이터베이스 관리자가 갱신사항을 허용할 경우에도 그 갱신사항이 허용되지 않음을 의미합니다. false 값은 데이터베이스 관리자가 허용할 경우 갱신사항이 허용됨을 의미합니다. 기본값은 false입니다.
nullToken
데이터베이스 널 값을 표시하기 위해 사용할 대소문자 구분 문자열 값을 지정합니다. 이 속성은 선택적입니다. 이는 Select에서 매개변수 값을 가져오거나 설정하는 조치의 동일 속성에 대해 기본값으로 사용됩니다. 두 곳에서 모두 속성을 생략하면, 기본값은 &empty입니다. (&empty는 HTML 문자 엔티티와 유사한 특수 값으로, 이 속성에서 빈 문자열을 표시하는 것으로 인식됩니다.) 널 값 표시에 대한 자세한 정보는 널 값을 참조하십시오.
trace
데이터베이스 조치 추적의 사용 여부를 지정합니다. 기본값은 false입니다.

x:select 조치 본문에는 다음과 같은 태그가 올 수 있습니다.

<x:sql>
실행할 SQL 문을 지정합니다.
<x:parameter>
SQL 문에서 매개변수에 대한 값 및 메타데이터를 지정합니다. SQL 문에서 x:parameter 태그 및 매개변수 사이에는 일 대 일 대응이 있어야 합니다.

예제

다음 조치는 범위가 세션인 select1 이름의 DBSelect Bean을 작성합니다. 이 조치는 conn1의 정보를 사용하여 데이터베이스에 연결하고 결과 세트에 EMPLOYEE 테이블의 사원 번호 및 이름이 있는 Select 문을 실행합니다. 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>

다음 조치는 이전 예제 중 하나의 결과 세트에 있는 행 사이에 반복하여 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>
이용약관 | 피드백
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.