📄 resultset.doc.html
字号:
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>getDouble </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td><strong>X</strong> </td>
<td><strong>X</strong> </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>getBigDecimal </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td><strong>X</strong> </td>
<td><strong>X</strong> </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>getBoolean </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td><strong>X</strong> </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>getString </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td><strong>X</strong> </td>
<td><strong>X</strong> </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
</tr>
<tr>
<td>getBytes </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td><strong>X</strong> </td>
<td><strong>X</strong> </td>
<td>x </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>getDate </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td> </td>
<td> </td>
<td> </td>
<td><strong>X</strong> </td>
<td> </td>
<td>x </td>
</tr>
<tr>
<td>getTime </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td><strong>X</strong> </td>
<td>x </td>
</tr>
<tr>
<td>getTimestamp </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td> </td>
<td> </td>
<td> </td>
<td>x </td>
<td> </td>
<td><strong>X</strong> </td>
</tr>
<tr>
<td>getAsciiStream </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>x </td>
<td>x </td>
<td><strong>X</strong> </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>getUnicodeStream </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>x </td>
<td>x </td>
<td><strong>X</strong> </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>getBinaryStream </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>x </td>
<td>x </td>
<td><strong>X</strong> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>getObject </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
<td>x </td>
</tr>
</table>
<table>
<tr>
<td></td>
</tr>
</table>
<p><a name="1003717"></a> </p>
<h3>5.1.4 对非常大的行值使用流</h3>
<code>
<p>ResultSet</code> 可以获取任意大的 <code>LONGVARBINARY</code> 或 <code>LONGVARCHAR</code>
数据。方法 <code>getBytes</code> 和 <code>getString</code>
将数据返回为大的块(最大为 <code>Statement.getMaxFieldSize</code>
的返回值)。但是,以较小的固定块获取非常大的数据可能会更方便,而这可通过让
<code>ResultSet</code> 类返回 <code>java.io.Input</code>
流来完成。从该流中可分块读取数据。注意:必须立即访问这些流,因为在下一次对
<code>ResultSet</code> 调用 <code>getXXX</code>
时它们将自动关闭(这是由于基本实现对大块数据访问有限制)。 </p>
<p>JDBC API 具有三个获取流的方法,分别具有不同的返回值:
<ul>
<p><a name="1003521"></a></p>
<li><code>getBinaryStream</code>
返回只提供数据库原字节而不进行任何转换的流。<br>
<br>
<a name="1003522"></a> </li>
<li><code>getAsciiStream</code> 返回提供单字节 ASCII 字符的流。<br>
<br>
<a name="1003523"></a> </li>
<li><code>getUnicodeStream</code> 返回提供双字节 Unicode 字符的流。<br>
<br>
</li>
</ul>
<p><a name="1003524"></a></p>
<p>注意:它不同于 Java 流,后者返回无类型字节并可(例如)通用于
ASCII 和 Unicode 字符。</p>
<p><a name="1003525"></a>下列代码演示了 <code>getAsciiStream</code> 的用法: </p>
<pre><a name="1003526"></a> java.sql.Statement stmt = con.createStatement();
<a
name="1003527"></a> ResultSet r = stmt.executeQuery("SELECT x FROM Table2");
<a
name="1003528"></a> // 现在以 4K 块大小获取列 1 结果:
<a name="1003529"></a> byte buff = new byte[4096];
<a
name="1003530"></a> while (r.next()) {
<a name="1003532"></a> Java.io.InputStream fin = r.getAsciiStream(1);
<a
name="1003533"></a> for (;;) {
<a name="1003535"></a> int size = fin.read(buff);
<a
name="1003536"></a> if (size == -1) { // 到达流末尾
<a name="1003537"></a> break;
<a
name="1003538"></a> }
<a name="1003539"></a> // 将新填充的缓冲区发送到 ASCII 输出流:
<a
name="1003540"></a> output.write(buff, 0, size);
<a name="1003541"></a> }
<a
name="1003542"></a> }
</pre>
<a name="1003543"></a>
<h3>5.1.5 NULL 结果值</h3>
<p>要确定给定结果值是否是 <code>JDBC</code> <code>NULL</code>,必须先读取该列,然后使用
<code>ResultSet.wasNull</code> 方法检查该次读取是否返回 JDBC <code>NULL</code>。</p>
<p>当使用 <code>ResultSet.getXXX</code> 方法读取 JDBC<code> NULL</code>
时,方法 <code>wasNull</code> 将返回下列值之一:
<ul>
<p><a name="1003546"></a></p>
<li>Java <code>null</code> 值:对于返回 Java 对象的 <code>getXXX</code>
方法(例如 <code>getString</code>、<code>getBigDecimal</code>、<code>getBytes</code>、<code>getDate</code>、<code>getTime</code>、<code>getTimestamp</code>、<code>getAsciiStream</code>、<code>getUnicodeStream</code>、<code>getBinaryStream</code>、<code>getObject</code>
等)。<br>
<br>
<a name="1003547"></a> </li>
<li>零值:对于 <code>getByte</code>、<code>getShort</code>、<code>getInt</code>、<code>getLong</code>、<code>getFloat</code>
和 <code>getDouble。</code><br>
<br>
<a name="1003548"></a> </li>
<li><code>false</code> 值:对于 <code>getBoolean</code>。<br>
<br>
</li>
</ul>
<p><a name="1003549"></a></p>
<h3>5.1.6 可选结果集或多结果集</h3>
<p>通常使用 <code>executeQuery</code>(它返回单个 <code>ResultSet</code>)或 <code>executeUpdate</code>(它可用于任何数据库修改语句,并返回更新行数)可执行
SQL
语句。但有些情况下,应用程序在执行语句之前不知道该语句是否返回结果集。此外,有些已存储过程可能返回几个不同的结果集和/或更新计数。</p>
<p>为了适应这些情况,JDBC
提供了一种机制,允许应用程序执行语句,然后处理由结果集和更新计数组成的任意集合。这种机制的原理是首先调用一个完全通用的
<code>execute</code> 方法,然后调用另外三个方法,<code>getResultSet</code>、<code>getUpdateCount</code>
和 <code>getMoreResults</code>。这些方法允许应用程序一次一个地研究语句结果,并确定给定结果是
<code>ResultSet</code> 还是更新计数。</p>
<p><a name="1003552"></a>用户不必关闭 <code>ResultSet</code>;当产生它的 <code>Statement</code>
关闭、重新执行或用于从多结果序列中获取下一个结果时,该 <code>ResultSet</code>
将被 Statement 自动关闭。</p>
<p><a name="997732"></a> </p>
<p><br>
</p>
<hr>
<font size="-1"><a href="introTOC.doc.html">
<p>目录</a> | <a href="statement.doc.html">上一页</a> | <a
href="preparedstatement.doc.html">下一页</a> </font></p>
<hr>
<address>
<a href="mailto:jdbc@wombat.eng.sun.com">jdbc@wombat.eng.sun.com</a> 或 <a
href="mailto:jdbc-odbc@wombat.eng.sun.com">jdbc-odbc@wombat.eng.sun.com</a>
</address>
<a href="copyright.doc.html"><font size="-1"><i>
<p>版权所有 © 1996, 1997 Sun Microsystems, Inc. 保留所有权利</i></font>。</a><!-- HTML generated by dkramer on March 14, 1997 -->
</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -