191 lines
9.8 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<div class="subTitle">
compact3
</div>
<div class="subTitle">
javax.sql.rowset
</div>
<h2 class="title" title="Interface Predicate">Interface Predicate</h2>
</div><div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr/> <br/> <pre>public interface <span class="typeNameLabel">Predicate</span></pre>
<div class="block">
<span>标准接口为所有<code>FilteredRowSet</code>对象提供<code>FilteredRowSet</code>来描述其过滤器。</span>
<h3> <span>1.0背景</span> </h3>
<span><code>Predicate</code>接口是应用程序可以实现的标准接口,用于定义要应用于<code>FilteredRowSet</code>对象的过滤器。</span>
<span>A <code>FilteredRowSet</code>对象消耗此接口的实现,并强制执行方法<code>evaluate</code>定义的<code>evaluate</code></span>
<span>A <code>FilteredRowSet</code>对象以双向方式实施过滤器约束:它仅输出在过滤器的约束内的行;</span>
<span>相反,它仅插入,修改或更新在过滤器的约束内的行。</span>
<h3> <span>2.0实施指引</span> </h3>
<span>为了提供FilteredRowSet的<code>FilteredRowSet</code></span>
<span>这个接口必须实现。</span>
<span>此时JDBC RowSet实现JSR-114不指定任何标准过滤器定义。</span>
<span>通过指定一个标准装置和机构,用于一系列的过滤器来进行定义,并与两者的参考和供应商实现部署<code>FilteredRowSet</code>接口,这允许的柔性和应用动机实现<code>Predicate</code>出现。</span>
<p> <span>示例实现将如下所示:</span> </p>
<pre> <span><code> public class Range implements Predicate { private int[] lo; private int[] hi; private int[] idx; public Range(int[] lo, int[] hi, int[] idx) { this.lo = lo; this.hi = hi; this.idx = idx; } public boolean evaluate(RowSet rs) { // Check the present row determine if it lies // within the filtering criteria. for (int i = 0; i &lt; idx.length; i++) { int value; try { value = (Integer) rs.getObject(idx[i]); } catch (SQLException ex) { Logger.getLogger(Range.class.getName()).log(Level.SEVERE, null, ex); return false; } if (value &lt; lo[i] &amp;&amp; value &gt; hi[i]) { // outside of filter constraints return false; } } // Within filter constraints return true; } } </code></span> </pre>
<p> <span>上面的例子实现了一个简单的范围谓词。</span> <span>请注意,实现应该不是必需的,以提供<code>String</code>和基于整数索引的构造函数来提供使用列标识约定的JDBC RowSet实现应用程序。</span> </p>
</div> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- --> </a> <h3>方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
<caption>
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t3"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd"> </span></span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor" id="i0">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sql/rowset/Predicate.html#evaluate-java.lang.Object-int-">evaluate</a></span>(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> value, int column)</code>
<div class="block">
该方法由
<code>FilteredRowSet</code>对象调用,以检查该值是否位于使用
<code>setFilter()</code>方法设置的
<code>setFilter()</code>条件(或存在多个约束的条件)
<code>setFilter()</code>
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sql/rowset/Predicate.html#evaluate-java.lang.Object-java.lang.String-">evaluate</a></span>(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> value, <a href="../../../java/lang/String.html" title="class in java.lang">String</a> columnName)</code>
<div class="block">
该方法由
<code>FilteredRowSet</code>对象调用以检查该值是否在使用setFilter方法设置的过滤条件之间。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sql/rowset/Predicate.html#evaluate-javax.sql.RowSet-">evaluate</a></span>(<a href="../../../javax/sql/RowSet.html" title="interface in javax.sql">RowSet</a> rs)</code>
<div class="block">
该方法通常称为
<code>FilteredRowSet</code>对象内部方法(不是公共的),它控制
<code>RowSet</code>对象的光标从行移动到下一个。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul> </li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="evaluate-javax.sql.RowSet-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>evaluate</h4> <pre>boolean evaluate(<a href="../../../javax/sql/RowSet.html" title="interface in javax.sql">RowSet</a> rs)</pre>
<div class="block">
<span>此方法通常称为<code>FilteredRowSet</code>对象内部方法(非公开),可控制<code>RowSet</code>对象的光标从行移动到下一个。</span>
<span>另外,如果这个内部方法将光标移动到已被删除的行上,内部方法将继续使用光标,直到找到有效的行。</span>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>rs</code> -该
<code>RowSet</code>被评估
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span><code>true</code>如果在过滤器中有更多行;</span>
<span><code>false</code>否则</span>
</dd>
</dl> </li>
</ul> <a name="evaluate-java.lang.Object-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>evaluate</h4> <pre>boolean evaluate(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> value,
int column)
throws <a href="../../../java/sql/SQLException.html" title="class in java.sql">SQLException</a></pre>
<div class="block">
<span>该方法由<code>FilteredRowSet</code>对象调用,以检查该值是否位于使用<code>setFilter()</code>方法设置的<code>setFilter()</code>条件(或存在多个约束的条件) <code>setFilter()</code></span>
<p> <span><code>FilteredRowSet</code>对象将在内部使用此方法,同时向<code>FilteredRowSet</code>实例插入新行。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>value</code> - 需要检查的
<code>Object</code>值,是否可以作为此
<code>FilterRowSet</code>对象的一部分。
</dd>
<dd>
<span><code>column</code> - 一个<code>int</code>对象,必须与此<code>RowSet</code>对象中的列的SQL索引匹配。</span>
<span>这必须已经传递给<code>Predicate</code>作为<code>Predicate</code>列之一,而初始化<code>Predicate</code></span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span><code>true</code>如果行值位于过滤器内;</span>
<span><code>false</code>否则</span>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/sql/SQLException.html" title="class in java.sql">SQLException</a></code> - 如果列不是过滤条件的一部分
</dd>
</dl> </li>
</ul> <a name="evaluate-java.lang.Object-java.lang.String-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>evaluate</h4> <pre>boolean evaluate(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> value,
<a href="../../../java/lang/String.html" title="class in java.lang">String</a> columnName)
throws <a href="../../../java/sql/SQLException.html" title="class in java.sql">SQLException</a></pre>
<div class="block">
<span>该方法由<code>FilteredRowSet</code>对象调用以检查该值是否在使用setFilter方法设置的过滤条件之间。</span>
<p> <span><code>FilteredRowSet</code>对象将在内部使用此方法,而将新行<code>FilteredRowSet</code><code>FilteredRowSet</code>实例中。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>value</code> - 需要检查的
<code>Object</code>值,是否可以作为此
<code>FilterRowSet</code>一部分。
</dd>
<dd>
<span><code>columnName</code> - 一个<code>String</code>对象,必须匹配此<code>RowSet</code>中列的SQL名称忽略大小写。</span>
<span>这必须已经传递给<code>Predicate</code>作为<code>Predicate</code>列之一,而初始化<code>Predicate</code></span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span><code>true</code>如果值位于过滤器内;</span>
<span><code>false</code>否则</span>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/sql/SQLException.html" title="class in java.sql">SQLException</a></code> - 如果列不是过滤条件的一部分
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>