﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-kook-文章分类-J2SE</title><link>http://www.blogjava.net/kook/category/13725.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:32:12 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:32:12 GMT</pubDate><ttl>60</ttl><item><title>ArrayList的用法</title><link>http://www.blogjava.net/kook/articles/71604.html</link><dc:creator>kook</dc:creator><author>kook</author><pubDate>Sun, 24 Sep 2006 14:31:00 GMT</pubDate><guid>http://www.blogjava.net/kook/articles/71604.html</guid><wfw:comment>http://www.blogjava.net/kook/comments/71604.html</wfw:comment><comments>http://www.blogjava.net/kook/articles/71604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kook/comments/commentRss/71604.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kook/services/trackbacks/71604.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
						<font face="Verdana">他是<span lang="EN-US">List</span>接口的实现类。<font color="#000000"><span lang="EN-US">ArrayList</span>类相当于是一个动态数组。<span lang="EN-US"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span></font></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
						<font face="Verdana">Methods:<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<font face="Verdana">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体">
								<span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'"><font size="2">  </font></span></span>
						</span>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">void add</span>
						<font size="2">
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">（<span lang="EN-US">Object obj</span>）</span>
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
						<font face="Verdana">往<span lang="EN-US">ArrayList</span>的对<font style="BACKGROUND-COLOR: #ffffff">象里增加一个元素<span lang="EN-US"><o:p></o:p></span></font></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<font face="Verdana">
						<code>
								<span lang="EN-US" style="FONT-SIZE: 10pt">
										<span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'"><font size="2">  </font></span></span>
								</span>
						</code>
						<code>
								<span lang="EN-US" style="FONT-SIZE: 10pt; mso-bidi-font-weight: bold">
										<a href="mk:@MSITStore:L:\Temp\JavaAPI\JDK150中文第五版.chm::/Java_Api/gceclub.sun.com.cn/download/Java_Docs/html/zh_CN/api/java/util/ArrayList.html#set(int, E)">
												<span style="COLOR: windowtext; TEXT-DECORATION: none; mso-bidi-font-family: 'Times New Roman'; text-underline: none">set</span>
										</a>
								</span>
						</code>
						<code>
								<span lang="EN-US" style="FONT-SIZE: 10pt">(int index, </span>
						</code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">Object</span>
						<font size="2">
								<code>
										<span lang="EN-US" style="FONT-SIZE: 10pt"> element)<o:p></o:p></span>
								</code>
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<font face="Verdana">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt">用指定的元素替代此列表中指定位置上的元素。</span>
						<font size="2">
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
										<o:p>
										</o:p>
								</span>
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<font face="Verdana">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体">
								<span style="mso-list: Ignore">3、<span style="FONT: 7pt 'Times New Roman'"><font size="2">  </font></span></span>
						</span>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">int size</span>
						<font size="2">
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">（）<span lang="EN-US"><o:p></o:p></span></span>
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
						<font face="Verdana">获得<span lang="EN-US">ArrayList</span>的对象中元素的个数。<span lang="EN-US"><o:p></o:p></span></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<font face="Verdana">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体">
								<span style="mso-list: Ignore">4、<span style="FONT: 7pt 'Times New Roman'"><font size="2">  </font></span></span>
						</span>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">get</span>
						<font size="2">
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">（<span lang="EN-US">int index)<o:p></o:p></span></span>
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
						<font face="Verdana">返回<span lang="EN-US">ArrayList</span>的对象中索引为<span lang="EN-US">index</span>的元素。<span lang="EN-US"><o:p></o:p></span></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<font face="Verdana">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体">
								<span style="mso-list: Ignore">5、<span style="FONT: 7pt 'Times New Roman'"><font size="2">  </font></span></span>
						</span>
						<code>
								<span lang="EN-US" style="FONT-SIZE: 10pt">
										<a title="java.lang 中的类" href="mk:@MSITStore:L:\Temp\JavaAPI\JDK150中文第五版.chm::/Java_Api/gceclub.sun.com.cn/download/Java_Docs/html/zh_CN/api/java/lang/Object.html">
												<span style="TEXT-DECORATION: none; mso-bidi-font-family: 'Times New Roman'; text-underline: none">Object</span>
										</a>[] </span>
						</code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">toArray</span>
						<font size="2">
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">（）<span lang="EN-US"><o:p></o:p></span></span>
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
						<font face="Verdana">将<span lang="EN-US">ArrayList</span>的对象中的元素返回到一个对象数组中。<span lang="EN-US"><o:p></o:p></span></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font face="Verdana">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">PS</span>
						<font size="2">
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">：<span lang="EN-US">Arrays.asList(Object[] objs);<o:p></o:p></span></span>
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font face="Verdana">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
								<span style="mso-tab-count: 1">    </span>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回一个受指定数组支持的固定大小的列表。</span>
						<font size="2">
								<br />
						</font>
				</font>
		</p>
		<div class="shape" style="PADDING-RIGHT: 7.95pt; PADDING-LEFT: 7.95pt; PADDING-BOTTOM: 4.35pt; PADDING-TOP: 4.35pt" v:shape="_x0000_s1026">
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #008080"> 1</span>
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
										<span style="COLOR: #000000">ArrayList al </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000"> ArrayList();<br /></span>
										<span style="COLOR: #008080"> 2</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span>
										<span style="COLOR: #008080"> 3</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        al.add(</span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> Point(</span>
										<span style="COLOR: #000000">3</span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000">3</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000">));<br /></span>
										<span style="COLOR: #008080"> 4</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        al.add(</span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> Point(</span>
										<span style="COLOR: #000000">4</span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000">4</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000">));<br /></span>
										<span style="COLOR: #008080"> 5</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        al.add(</span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> Point(</span>
										<span style="COLOR: #000000">5</span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000">5</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000">));<br /></span>
										<span style="COLOR: #008080"> 6</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span>
										<span style="COLOR: #008080"> 7</span>
										<span style="COLOR: #000000">
												<img id="Codehighlighter1_118_191_Open_Image" onclick="this.style.display='none'; Codehighlighter1_118_191_Open_Text.style.display='none'; Codehighlighter1_118_191_Closed_Image.style.display='inline'; Codehighlighter1_118_191_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
												<img id="Codehighlighter1_118_191_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_118_191_Closed_Text.style.display='none'; Codehighlighter1_118_191_Open_Image.style.display='inline'; Codehighlighter1_118_191_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span>
										<span id="Codehighlighter1_118_191_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
								</font>
						</font>
						<span id="Codehighlighter1_118_191_Open_Text">
								<font face="Verdana">
										<font size="2">
												<span style="COLOR: #008000">/*</span>
										</font>
								</font>
								<font face="Verdana">
										<font size="2">
												<span style="COLOR: #008000">for(int i=0;i&lt;al.size();i++)<br /></span>
												<span style="COLOR: #008080"> 8</span>
										</font>
								</font>
								<font face="Verdana">
										<font size="2">
												<span style="COLOR: #008000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        {<br /></span>
												<span style="COLOR: #008080"> 9</span>
										</font>
								</font>
								<font face="Verdana">
										<font size="2">
												<span style="COLOR: #008000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(al.get(i));<br /></span>
												<span style="COLOR: #008080">10</span>
												<span style="COLOR: #008000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />        }</span>
												<span style="COLOR: #008000">*/</span>
										</font>
								</font>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #008080">11</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span>
										<span style="COLOR: #008080">12</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        System.out.println(al);<br /></span>
										<span style="COLOR: #008080">13</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        Object[] objs </span>
										<span style="COLOR: #000000">=</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000"> al.toArray();<br /></span>
										<span style="COLOR: #008080">14</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        System.out.println(Arrays.toString(objs));<br /></span>
										<span style="COLOR: #008080">15</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        List L </span>
										<span style="COLOR: #000000">=</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000"> Arrays.asList(objs);<br /></span>
										<span style="COLOR: #008080">16</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
										</span>
								</font>
						</font>
				</div>
				<br />
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
								<font style="BACKGROUND-COLOR: #ffffff" face="Verdana" size="2">
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
						<font face="Verdana" size="2">
						</font>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 20pt; TEXT-INDENT: -20pt; mso-char-indent-count: -2.0">
						<font style="BACKGROUND-COLOR: #ffffff">
								<font face="Verdana">
										<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
												<span style="mso-tab-count: 2">    </span>
										</span>
										<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
												<font style="BACKGROUND-COLOR: #ffffff">这里的<span lang="EN-US">L</span>是通过<span lang="EN-US">Arrays.asList</span>返回一个接口。这时候<span lang="EN-US">L</span>的长度就固定不能再变了，不能给<span lang="EN-US">L</span>添加元素了。但是可以通过<span lang="EN-US">set</span>方法改变<span lang="EN-US">L</span>中指定元素的值。<span lang="EN-US"><o:p></o:p></span></font>
										</span>
								</font>
						</font>
				</p>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font face="Verdana">
						<font size="2">
								<span lang="EN-US">
										<span style="mso-tab-count: 1">      </span>
								</span>
								<span lang="EN-US">
										<o:p>  </o:p>
								</span>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">toArray</span>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">方法是将一个<span lang="EN-US">List</span>对象转成一个数组，而<span lang="EN-US">Arrays.asList</span>方法是将一个数组转成一个<span lang="EN-US">List</span>。他们是集合和数组之间的桥梁，有时候方法中的参数可能需要数组或者<span lang="EN-US">List</span>的时候，就可以用到他们转换，而不用去重新创建实例。<span lang="EN-US"><o:p></o:p></span></span>
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; TEXT-ALIGN: left; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt" align="left">
				<font face="Verdana">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体">
								<span style="mso-list: Ignore">6、<span style="FONT: 7pt 'Times New Roman'"><font size="2">  </font></span></span>
						</span>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">iterator()<o:p></o:p></span>
						<font size="2">
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-ALIGN: left" align="left">
				<font face="Verdana">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">返回一个迭代器。所有继承<span lang="EN-US">Collection</span>接口的接口或者这些接口的实现类，都有这个方法。通过<span lang="EN-US">List</span>接口对象返回的迭代器没有实现<span lang="EN-US">iterator</span>接口中的<span lang="EN-US">remove</span>方法。凡是没有实现<span lang="EN-US">iterator</span>接口中的<span lang="EN-US">remove</span>方法，都会抛出一个</span>
						<font size="2">
								<u>
										<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: navy; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-highlight: white">UnsupportedOperationException</span>
								</u>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">（不支持的操作）异常。如：</span>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
										<o:p>
										</o:p>
								</span>
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-ALIGN: left" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
						<o:p>
								<font face="Verdana">  </font>
						</o:p>
				</span>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080">1</span>
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<span style="COLOR: #000000">List l </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">;               </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">List 接口对象l </span>
						</font>
				</font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080">2</span>
								<span style="COLOR: #008000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</span>
						</font>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080">3</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Iterator it </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> l.iterator();  </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 通过List接口对象l返回的迭代器it </span>
						</font>
				</font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080">4</span>
								<span style="COLOR: #008000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</span>
						</font>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080">5</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />it.next();                   </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">it 有next方法 </span>
						</font>
				</font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080">6</span>
								<span style="COLOR: #008000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</span>
						</font>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080">7</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />it.remove();                    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 这里会抛出 UnsupportedOperationException </span>
						</font>
				</font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080">8</span>
								<span style="COLOR: #008000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</span>
						</font>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080">9</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</span>
						</font>
				</font>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-ALIGN: left" align="left">
				<br style="mso-ignore: vglayout" clear="all" />
				<font face="Verdana" size="2">
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align="left">
				<font face="Verdana">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">PS</span>
						<font size="2">
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">：迭代器的作用：<span lang="EN-US"><o:p></o:p></span></span>
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 15pt; TEXT-INDENT: -15pt; TEXT-ALIGN: left; mso-char-indent-count: -1.5" align="left">
				<font face="Verdana">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
								<span style="mso-tab-count: 1">   </span>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">他可以以一种通用的方式去访问集合中的所有元素。在<span lang="EN-US">ArrayList</span>类中可以通过<span lang="EN-US">get</span>方法去访问，但是有些集合的实现类中并没有<span lang="EN-US">get</span>方法。而我们知道，所有继承<span lang="EN-US">Collection</span>接口的接口或者这些接口的实现类，都可以通过<span lang="EN-US">iterator()</span>返回一个迭代器，那么我们就可以通过迭代器这种通用的方式去访问集合中的所有元素了。访问方法如下：<span lang="EN-US"><o:p></o:p></span></span>
						<font size="2">
								<br />
						</font>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 15pt; TEXT-INDENT: -15pt; TEXT-ALIGN: left; mso-char-indent-count: -1.5" align="left">
				<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /?>
				<v:shape id="_x0000_s1028" style="MARGIN-TOP: 7.8pt; Z-INDEX: 3; LEFT: 0px; VISIBILITY: hidden; MARGIN-LEFT: 18pt; WIDTH: 390pt; TEXT-INDENT: 0px; POSITION: absolute; HEIGHT: 198.9pt; TEXT-ALIGN: left" type="#_x0000_t202">
						<font face="Verdana" size="2">
						</font>
				</v:shape>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 1">
						</span>
				</span>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080"> 1</span>
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<span style="COLOR: #000000">ArrayList al </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
						</font>
				</font>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000"> ArrayList(); <br /></span>
								<span style="COLOR: #008080"> 2</span>
						</font>
				</font>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 3</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    al.add(</span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> Point(</span>
								<span style="COLOR: #000000">3</span>
								<span style="COLOR: #000000">,</span>
								<span style="COLOR: #000000">3</span>
						</font>
				</font>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000">)); <br /></span>
								<span style="COLOR: #008080"> 4</span>
						</font>
				</font>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 5</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    al.add(</span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> Point(</span>
								<span style="COLOR: #000000">4</span>
								<span style="COLOR: #000000">,</span>
								<span style="COLOR: #000000">4</span>
						</font>
				</font>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000">)); <br /></span>
								<span style="COLOR: #008080"> 6</span>
						</font>
				</font>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 7</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    al.add(</span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> Point(</span>
								<span style="COLOR: #000000">5</span>
								<span style="COLOR: #000000">,</span>
								<span style="COLOR: #000000">5</span>
						</font>
				</font>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000">)); <br /></span>
								<span style="COLOR: #008080"> 8</span>
						</font>
				</font>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 9</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Iterator it1 </span>
								<span style="COLOR: #000000">=</span>
						</font>
				</font>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000"> al.iterator(); <br /></span>
								<span style="COLOR: #008080">10</span>
						</font>
				</font>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">11</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
								<span style="COLOR: #0000ff">while</span>
								<span style="COLOR: #000000">(it.hasNext())                     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 通过迭代器访问集合元素 </span>
						</font>
				</font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #008080">12</span>
								<span style="COLOR: #008000">
										<img id="Codehighlighter1_226_282_Open_Image" onclick="this.style.display='none'; Codehighlighter1_226_282_Open_Text.style.display='none'; Codehighlighter1_226_282_Closed_Image.style.display='inline'; Codehighlighter1_226_282_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
										<img id="Codehighlighter1_226_282_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_226_282_Closed_Text.style.display='none'; Codehighlighter1_226_282_Open_Image.style.display='inline'; Codehighlighter1_226_282_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">       </span>
								<span id="Codehighlighter1_226_282_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
						</font>
				</font>
				<span id="Codehighlighter1_226_282_Open_Text">
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000">{ <br /></span>
										<span style="COLOR: #008080">13</span>
								</font>
						</font>
						<font face="Verdana">
								<font size="2">
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />              System.out.println(it.next()); <br /></span>
										<span style="COLOR: #008080">14</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />       }</span>
								</font>
						</font>
				</span>
				<font face="Verdana">
						<font size="2">
								<span style="COLOR: #000000"> <br /></span>
								<span style="COLOR: #008080">15</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</span>
						</font>
				</font>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 15pt; TEXT-INDENT: -15pt; TEXT-ALIGN: left; mso-char-indent-count: -1.5" align="left">
				<br />
				<font face="Verdana" size="2">
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">ArrayList</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">底层采用数组完成，而<span lang="EN-US">LinkedList</span>则是以一般的双向链表<span lang="EN-US">(double-linked list)</span>完成，其内每个对象除了数据本身外，还有两个引用，分别指向前一个元素和后一个元素。<span lang="EN-US"><o:p></o:p></span></span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">
						<font face="Verdana">如果我们经常在<span lang="EN-US">List</span>的开始处增加元素，或者在<span lang="EN-US">List</span>中进行插入和删除操作，我们应该使用<span lang="EN-US">LinkedList</span>，否则的话，使用<span lang="EN-US">ArrayList</span>将更加快速。<span lang="EN-US"><o:p></o:p></span></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align="left">
				<font face="Verdana">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">这两个类都不是同步的，因此他们的效率也比较高。如果要实现同步，可以使用<span lang="EN-US">Vector</span>类，<span lang="EN-US">Vector</span>类中有一些继承的操作，使用的时候要小心，如果不实现同步一般都不用<span lang="EN-US">Vector</span>类。还可以用<span lang="EN-US">Collections</span>类的</span>
						<font size="2">
								<code>
										<span lang="EN-US" style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt">
												<a href="mk:@MSITStore:L:\Temp\JavaAPI\JDK150中文第五版.chm::/Java_Api/gceclub.sun.com.cn/download/Java_Docs/html/zh_CN/api/java/util/Collections.html#synchronizedCollection(java.util.Collection)">
														<span style="COLOR: windowtext; TEXT-DECORATION: none; mso-bidi-font-family: 'Times New Roman'; text-underline: none">synchronized</span>
												</a>
										</span>
								</code>
								<code>
										<span style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt">相关方法实现同步，不过效率没有</span>
								</code>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">Vector</span>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">类高。<span lang="EN-US"><o:p></o:p></span></span>
						</font>
				</font>
		</p>
<img src ="http://www.blogjava.net/kook/aggbug/71604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kook/" target="_blank">kook</a> 2006-09-24 22:31 <a href="http://www.blogjava.net/kook/articles/71604.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CallableStatement 接口</title><link>http://www.blogjava.net/kook/articles/61587.html</link><dc:creator>kook</dc:creator><author>kook</author><pubDate>Thu, 03 Aug 2006 12:35:00 GMT</pubDate><guid>http://www.blogjava.net/kook/articles/61587.html</guid><wfw:comment>http://www.blogjava.net/kook/comments/61587.html</wfw:comment><comments>http://www.blogjava.net/kook/articles/61587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kook/comments/commentRss/61587.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kook/services/trackbacks/61587.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Verdana" size="2">概述 </font>
		</p>
		<p>
				<font face="Verdana" size="2">　　CallableStatement 对象为所有的 DBMS 提供了一种以标准形式调用已储存过程的方法。已储存过程储存在数据库中。对已储存过程的调用是 CallableStatement对象所含的内容。这种调用是用一种换码语法来写的，有两种形式：一种形式带结果参，另一种形式不带结果参数。结果参数是一种输出 (OUT) 参数，是已储存过程的返回值。两种形式都可带有数量可变的输入（IN 参数）、输出（OUT 参数）或输入和输出（INOUT 参数）的参数。问号将用作参数的占位符。</font>
		</p>
		<p>
				<font face="Verdana" size="2"> <br /> </font>
		</p>
		<p>
				<br />
				<font face="Verdana" size="2">　　在 JDBC 中调用已储存过程的语法如下所示。注意，方括号表示其间的内容是可选项；方括号本身并不是语法的组成部份。</font>
		</p>
		<p>
				<font face="Verdana" size="2">{call 过程名[(?, ?, ...)]} </font>
		</p>
		<p>
				<font face="Verdana" size="2">　　返回结果参数的过程的语法为：</font>
		</p>
		<p>
				<font face="Verdana" size="2">{? = call 过程名[(?, ?, ...)]} </font>
		</p>
		<p>
				<font face="Verdana" size="2">　　不带参数的已储存过程的语法类似：</font>
		</p>
		<p>
				<font face="Verdana" size="2">{call 过程名} </font>
		</p>
		<p>
				<font face="Verdana" size="2">　　通常，创建 CallableStatement 对象的人应当知道所用的 DBMS 是支持已储存过程的，并且知道这些过程都是些什么。然而，如果需要检查，多种DatabaseMetaData 方法都可以提供这样的信息。例如，如果 DBMS 支持已储存过程的调用，则supportsStoredProcedures 方法将返回 true，而getProcedures 方法将返回对已储存过程的描述。CallableStatement 继承 Statement 的方法（它们用于处理一般的 SQL 语句），还继承了 PreparedStatement 的方法（它们用于处理 IN 参）。</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　CallableStatement 中定义的所有方法都用于处理 OUT 参数或 INOUT 参数的输出部分：注册 OUT 参数的 JDBC 类型（一般 SQL 类型）、从这些参数中检索结果，或者检查所返回的值是否为 JDBC NULL。</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　1、创建 CallableStatement 对象</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　CallableStatement 对象是用 Connection 方法 prepareCall 创建的。下例创建 CallableStatement 的实例，其中含有对已储存过程 getTestData 调用。该过程有两个变量，但不含结果参数：</font>
		</p>
		<p>
				<font face="Verdana" size="2">CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}"); </font>
		</p>
		<p>
				<font face="Verdana" size="2">　　其中?占位符为IN、OUT还是INOUT参数，取决于已储存过程getTestData。</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　2、IN和OUT参数</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　将IN参数传给 CallableStatement 对象是通过 setXXX 方法完成的。该方法继承自 PreparedStatement。所传入参数的类型决定了所用的setXXX方法（例如，用 setFloat 来传入 float 值等）。</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　如果已储存过程返回 OUT 参数，则在执行 CallableStatement 对象以前必须先注册每个 OUT 参数的 JDBC 类型（这是必需的，因为某些 DBMS 要求 JDBC 类型）。注册 JDBC 类型是用 registerOutParameter 方法来完成的。语句执行完后，CallableStatement 的 getXXX 方法将取回参数值。正确的 getXXX 方法是为各参数所注册的 JDBC 类型所对应的 Java 类型。换言之， registerOutParameter 使用的是 JDBC 类型（因此它与数据库返回的 JDBC 类型匹配），而 getXXX 将之转换为 Java 类型。</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　作为示例，下述代码先注册 OUT 参数，执行由 cstmt 所调用的已储存过程，然后检索在 OUT 参数中返回的值。方法 getByte 从第一个 OUT 参数中取出一个 Java 字节，而 getBigDecimal 从第二个 OUT 参数中取出一个 BigDecimal 对象（小数点后面带三位数）：</font>
		</p>
		<p>
				<font face="Verdana" size="2">CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}");<br />cstmt.registerOutParameter(1, java.sql.Types.TINYINT);<br />cstmt.registerOutParameter(2, java.sql.Types.DECIMAL, 3);<br />cstmt.executeQuery();<br />byte x = cstmt.getByte(1);<br />java.math.BigDecimal n = cstmt.getBigDecimal(2, 3); </font>
		</p>
		<p>
				<font face="Verdana" size="2">　　CallableStatement 与 ResultSet 不同，它不提供用增量方式检索大 OUT 值的特殊机制。</font>
		</p>
		<p>
				<font face="Verdana" size="2">3、INOUT参数</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　既支持输入又接受输出的参数（INOUT 参数）除了调用 registerOutParameter 方法外，还要求调用适当的 setXXX 方法（该方法是从 PreparedStatement 继承来的）。setXXX 方法将参数值设置为输入参数，而 registerOutParameter 方法将它的 JDBC 类型注册为输出参数。setXXX 方法提供一个 Java 值，而驱动程序先把这个值转换为 JDBC 值，然后将它送到数据库中。这种 IN 值的 JDBC 类型和提供给 registerOutParameter 方法的 JDBC 类型应该相同。然后，要检索输出值，就要用对应的 getXXX 方法。例如，Java 类型为byte 的参数应该使用方法 setByte 来赋输入值。应该给registerOutParameter 提供类型为 TINYINT 的 JDBC 类型，同时应使用 getByte 来检索输出值。</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　下例假设有一个已储存过程 reviseTotal，其唯一参数是 INOUT 参数。方法setByte 把此参数设为 25，驱动程序将把它作为 JDBC TINYINT 类型送到数据库中。接着，registerOutParameter 将该参数注册为 JDBC TINYINT。执行完该已储存过程后，将返回一个新的 JDBC TINYINT 值。方法 getByte 将把这个新值作为 Java byte 类型检索。</font>
		</p>
		<p>
				<font face="Verdana" size="2">CallableStatement cstmt = con.prepareCall("{call reviseTotal(?)}");<br />cstmt.setByte(1, 25);<br />cstmt.registerOutParameter(1, java.sql.Types.TINYINT);<br />cstmt.executeUpdate();<br />byte x = cstmt.getByte(1); </font>
		</p>
		<p>
				<font face="Verdana" size="2">　　4、先检索结果，再检索 OUT 参数</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　由于某些 DBMS 的限制，为了实现最大的可移植性，建议先检索由执行CallableStatement 对象所产生的结果，然后再用 CallableStatement.getXXX 方法来检索 OUT 参数。如果 CallableStatement 对象返回多个 ResultSet 对象（通过调用 execute 方法），在检索 OUT 参数前应先检索所有的结果。这种情况下，为确保对所有的结果都进行了访问，必须对 Statement 方法 getResultSet、getUpdateCount 和getMoreResults 进行调用，直到不再有结果为止。</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　检索完所有的结果后，就可用 CallableStatement.getXXX 方法来检索 OUT 参数中的值。</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　5、检索作为OUT参数的NULL值</font>
		</p>
		<p>
				<font face="Verdana" size="2">　　返回到 OUT 参数中的值可能会是JDBC NULL。当出现这种情形时，将对 JDBC NULL 值进行转换以使 getXXX 方法所返回的值为 null、0 或 false，这取决于getXXX 方法类型。对于 ResultSet 对象，要知道0或false是否源于JDBCNULL的唯一方法，是用方法wasNull进行检测。如果 getXXX 方法读取的最后一个值是 JDBC NULL，则该方法返回 true，否则返回 flase。<br /></font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">package</span>
				<span style="COLOR: #000000"> jdbc;<br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_15_111_Open_Image" onclick="this.style.display='none'; Codehighlighter1_15_111_Open_Text.style.display='none'; Codehighlighter1_15_111_Closed_Image.style.display='inline'; Codehighlighter1_15_111_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_15_111_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_15_111_Closed_Text.style.display='none'; Codehighlighter1_15_111_Open_Image.style.display='inline'; Codehighlighter1_15_111_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span id="Codehighlighter1_15_111_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_15_111_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">
								<br />
						</span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * Created on 2004-6-1<br /></span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> *<br /></span>
						<span style="COLOR: #008080"> 6</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * 主要考查CallableStatement较细节的用法。<br /></span>
						<span style="COLOR: #008080"> 7</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * 如：取out参数，取返回值，多个结果集等.<br /></span>
						<span style="COLOR: #008080"> 8</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * <br /></span>
						<span style="COLOR: #008080"> 9</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * <br /></span>
						<span style="COLOR: #008080">10</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">11</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080">12</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_114_274_Open_Image" onclick="this.style.display='none'; Codehighlighter1_114_274_Open_Text.style.display='none'; Codehighlighter1_114_274_Closed_Image.style.display='inline'; Codehighlighter1_114_274_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_114_274_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_114_274_Closed_Text.style.display='none'; Codehighlighter1_114_274_Open_Image.style.display='inline'; Codehighlighter1_114_274_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span id="Codehighlighter1_114_274_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
				<span id="Codehighlighter1_114_274_Open_Text">
						<span style="COLOR: #008000">/**</span>
						<span style="COLOR: #008000">
								<br />
						</span>
						<span style="COLOR: #008080">13</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * </span>
						<span style="COLOR: #808080">@author</span>
						<span style="COLOR: #008000"> zw<br /></span>
						<span style="COLOR: #008080">14</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> *<br /></span>
						<span style="COLOR: #008080">15</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * To change the template for this generated type comment go to<br /></span>
						<span style="COLOR: #008080">16</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * Window&amp;gt;Preferences&amp;gt;Java&amp;gt;Code Generation&amp;gt;Code and Comments<br /></span>
						<span style="COLOR: #008080">17</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">18</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.sql.</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">;<br /></span>
				<span style="COLOR: #008080">19</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_316_1836_Open_Image" onclick="this.style.display='none'; Codehighlighter1_316_1836_Open_Text.style.display='none'; Codehighlighter1_316_1836_Closed_Image.style.display='inline'; Codehighlighter1_316_1836_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_316_1836_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_316_1836_Closed_Text.style.display='none'; Codehighlighter1_316_1836_Open_Image.style.display='inline'; Codehighlighter1_316_1836_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> CCallSP </span>
				<span id="Codehighlighter1_316_1836_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_316_1836_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080">20</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /></span>
						<span style="COLOR: #008080">21</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Connection conn;        <br /></span>
						<span style="COLOR: #008080">22</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Statement cmd;<br /></span>
						<span style="COLOR: #008080">23</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    PreparedStatement pCmd;<br /></span>
						<span style="COLOR: #008080">24</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    CallableStatement callCmd;        <br /></span>
						<span style="COLOR: #008080">25</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    ResultSet rs;<br /></span>
						<span style="COLOR: #008080">26</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /></span>
						<span style="COLOR: #008080">27</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> initConn()<br /></span>
						<span style="COLOR: #008080">28</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_456_1724_Open_Image" onclick="this.style.display='none'; Codehighlighter1_456_1724_Open_Text.style.display='none'; Codehighlighter1_456_1724_Closed_Image.style.display='inline'; Codehighlighter1_456_1724_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_456_1724_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_456_1724_Closed_Text.style.display='none'; Codehighlighter1_456_1724_Open_Image.style.display='inline'; Codehighlighter1_456_1724_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_456_1724_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_456_1724_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080">29</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String driver</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">com.microsoft.jdbc.sqlserver.SQLServerDriver</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">;<br /></span>
								<span style="COLOR: #008080">30</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String url</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">jdbc:microsoft:sqlserver://localhost:1433;databasename=northwind</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">;<br /></span>
								<span style="COLOR: #008080">31</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String uName</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">sa</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">;<br /></span>
								<span style="COLOR: #008080">32</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String uPwd</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">sa</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">;<br /></span>
								<span style="COLOR: #008080">33</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_649_1629_Open_Image" onclick="this.style.display='none'; Codehighlighter1_649_1629_Open_Text.style.display='none'; Codehighlighter1_649_1629_Closed_Image.style.display='inline'; Codehighlighter1_649_1629_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_649_1629_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_649_1629_Closed_Text.style.display='none'; Codehighlighter1_649_1629_Open_Image.style.display='inline'; Codehighlighter1_649_1629_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">try</span>
								<span id="Codehighlighter1_649_1629_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_649_1629_Open_Text">
										<span style="COLOR: #000000">{<br /></span>
										<span style="COLOR: #008080">34</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            Class.forName(driver);<br /></span>
										<span style="COLOR: #008080">35</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            conn</span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000">DriverManager.getConnection(url,uName,uPwd);<br /></span>
										<span style="COLOR: #008080">36</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            String callSql</span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">{?= call procQuery(?,?)}</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">;<br /></span>
										<span style="COLOR: #008080">37</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            callCmd</span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000">conn.prepareCall(callSql);            <br /></span>
										<span style="COLOR: #008080">38</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            callCmd.registerOutParameter(</span>
										<span style="COLOR: #000000">1</span>
										<span style="COLOR: #000000">,Types.INTEGER);            <br /></span>
										<span style="COLOR: #008080">39</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            callCmd.setInt(</span>
										<span style="COLOR: #000000">2</span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000">10248</span>
										<span style="COLOR: #000000">);<br /></span>
										<span style="COLOR: #008080">40</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            callCmd.registerOutParameter(</span>
										<span style="COLOR: #000000">3</span>
										<span style="COLOR: #000000">,Types.INTEGER);<br /></span>
										<span style="COLOR: #008080">41</span>
										<span style="COLOR: #000000">
												<img id="Codehighlighter1_978_1625_Open_Image" onclick="this.style.display='none'; Codehighlighter1_978_1625_Open_Text.style.display='none'; Codehighlighter1_978_1625_Closed_Image.style.display='inline'; Codehighlighter1_978_1625_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
												<img id="Codehighlighter1_978_1625_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_978_1625_Closed_Text.style.display='none'; Codehighlighter1_978_1625_Open_Image.style.display='inline'; Codehighlighter1_978_1625_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
										<span style="COLOR: #0000ff">if</span>
										<span style="COLOR: #000000">(callCmd.execute()</span>
										<span style="COLOR: #000000">==</span>
										<span style="COLOR: #0000ff">true</span>
										<span style="COLOR: #000000">)</span>
										<span id="Codehighlighter1_978_1625_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
												<img src="http://www.blogjava.net/images/dot.gif" />
										</span>
										<span id="Codehighlighter1_978_1625_Open_Text">
												<span style="COLOR: #000000">{</span>
												<span style="COLOR: #008000">//</span>
												<span style="COLOR: #008000">返回结果集<br /></span>
												<span style="COLOR: #008080">42</span>
												<span style="COLOR: #008000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
												<span style="COLOR: #008000">//</span>
												<span style="COLOR: #008000">第一个结果集</span>
												<span style="COLOR: #008000">
														<br />
												</span>
												<span style="COLOR: #008080">43</span>
												<span style="COLOR: #008000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
												</span>
												<span style="COLOR: #000000">                rs</span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000">callCmd.getResultSet();<br /></span>
												<span style="COLOR: #008080">44</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
												<span style="COLOR: #0000ff">while</span>
												<span style="COLOR: #000000">(rs.next())<br /></span>
												<span style="COLOR: #008080">45</span>
												<span style="COLOR: #000000">
														<img id="Codehighlighter1_1056_1223_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1056_1223_Open_Text.style.display='none'; Codehighlighter1_1056_1223_Closed_Image.style.display='inline'; Codehighlighter1_1056_1223_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
														<img id="Codehighlighter1_1056_1223_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1056_1223_Closed_Text.style.display='none'; Codehighlighter1_1056_1223_Open_Image.style.display='inline'; Codehighlighter1_1056_1223_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span>
												<span id="Codehighlighter1_1056_1223_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.blogjava.net/images/dot.gif" />
												</span>
												<span id="Codehighlighter1_1056_1223_Open_Text">
														<span style="COLOR: #000000">{<br /></span>
														<span style="COLOR: #008080">46</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    System.out.println(rs.getInt(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">orderid</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">)</span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000"> </span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000">
																<br />
														</span>
														<span style="COLOR: #008080">47</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                                       rs.getString(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">customerid</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">)</span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000"> </span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000">
																<br />
														</span>
														<span style="COLOR: #008080">48</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                                       rs.getDate(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">Orderdate</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">));                    <br /></span>
														<span style="COLOR: #008080">49</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span>
												</span>
												<span style="COLOR: #000000">
														<br />
												</span>
												<span style="COLOR: #008080">50</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
												<span style="COLOR: #008000">//</span>
												<span style="COLOR: #008000">第二个结果集</span>
												<span style="COLOR: #008000">
														<br />
												</span>
												<span style="COLOR: #008080">51</span>
												<span style="COLOR: #008000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
												</span>
												<span style="COLOR: #000000">                callCmd.getMoreResults();<br /></span>
												<span style="COLOR: #008080">52</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                rs</span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000">callCmd.getResultSet();<br /></span>
												<span style="COLOR: #008080">53</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
												<span style="COLOR: #0000ff">while</span>
												<span style="COLOR: #000000">(rs.next())<br /></span>
												<span style="COLOR: #008080">54</span>
												<span style="COLOR: #000000">
														<img id="Codehighlighter1_1324_1473_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1324_1473_Open_Text.style.display='none'; Codehighlighter1_1324_1473_Closed_Image.style.display='inline'; Codehighlighter1_1324_1473_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
														<img id="Codehighlighter1_1324_1473_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1324_1473_Closed_Text.style.display='none'; Codehighlighter1_1324_1473_Open_Image.style.display='inline'; Codehighlighter1_1324_1473_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span>
												<span id="Codehighlighter1_1324_1473_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.blogjava.net/images/dot.gif" />
												</span>
												<span id="Codehighlighter1_1324_1473_Open_Text">
														<span style="COLOR: #000000">{<br /></span>
														<span style="COLOR: #008080">55</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    System.out.println(rs.getInt(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">ProductID</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">)</span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000"> | </span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000">
																<br />
														</span>
														<span style="COLOR: #008080">56</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                                       rs.getString(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">UnitPrice</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">)</span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000"> | </span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000">
																<br />
														</span>
														<span style="COLOR: #008080">57</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                                       rs.getInt(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">quantity</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">));                    <br /></span>
														<span style="COLOR: #008080">58</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span>
												</span>
												<span style="COLOR: #000000">
														<br />
												</span>
												<span style="COLOR: #008080">59</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
												<span style="COLOR: #008000">//</span>
												<span style="COLOR: #008000">输出参数和返回值</span>
												<span style="COLOR: #008000">
														<br />
												</span>
												<span style="COLOR: #008080">60</span>
												<span style="COLOR: #008000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
												</span>
												<span style="COLOR: #000000">                System.out.println();<br /></span>
												<span style="COLOR: #008080">61</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.println(</span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">return=</span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">+</span>
												<span style="COLOR: #000000">callCmd.getInt(</span>
												<span style="COLOR: #000000">1</span>
												<span style="COLOR: #000000">));<br /></span>
												<span style="COLOR: #008080">62</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.println(</span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">out=</span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">+</span>
												<span style="COLOR: #000000">callCmd.getInt(</span>
												<span style="COLOR: #000000">3</span>
												<span style="COLOR: #000000">));            <br /></span>
												<span style="COLOR: #008080">63</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
										</span>
										<span style="COLOR: #000000">
												<br />
										</span>
										<span style="COLOR: #008080">64</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<span style="COLOR: #008080">65</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_1651_1721_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1651_1721_Open_Text.style.display='none'; Codehighlighter1_1651_1721_Closed_Image.style.display='inline'; Codehighlighter1_1651_1721_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_1651_1721_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1651_1721_Closed_Text.style.display='none'; Codehighlighter1_1651_1721_Open_Image.style.display='inline'; Codehighlighter1_1651_1721_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">catch</span>
								<span style="COLOR: #000000">(Exception e)</span>
								<span id="Codehighlighter1_1651_1721_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_1651_1721_Open_Text">
										<span style="COLOR: #000000">{<br /></span>
										<span style="COLOR: #008080">66</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            e.printStackTrace();<br /></span>
										<span style="COLOR: #008080">67</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(e.getMessage());            <br /></span>
										<span style="COLOR: #008080">68</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<span style="COLOR: #008080">69</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">70</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">test coding</span>
						<span style="COLOR: #008000">
								<br />
						</span>
						<span style="COLOR: #008080">71</span>
						<span style="COLOR: #008000">
								<img id="Codehighlighter1_1781_1834_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1781_1834_Open_Text.style.display='none'; Codehighlighter1_1781_1834_Closed_Image.style.display='inline'; Codehighlighter1_1781_1834_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_1781_1834_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1781_1834_Closed_Text.style.display='none'; Codehighlighter1_1781_1834_Open_Image.style.display='inline'; Codehighlighter1_1781_1834_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> main(String[] args) </span>
						<span id="Codehighlighter1_1781_1834_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1781_1834_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080">72</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        CCallSP call</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> CCallSP();<br /></span>
								<span style="COLOR: #008080">73</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        call.initConn();    <br /></span>
								<span style="COLOR: #008080">74</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">75</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">76</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p> </p>
		<p>
				<font face="Verdana" size="2"> </font>
		</p>
<img src ="http://www.blogjava.net/kook/aggbug/61587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kook/" target="_blank">kook</a> 2006-08-03 20:35 <a href="http://www.blogjava.net/kook/articles/61587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PreparedStatement 接口</title><link>http://www.blogjava.net/kook/articles/61511.html</link><dc:creator>kook</dc:creator><author>kook</author><pubDate>Thu, 03 Aug 2006 06:40:00 GMT</pubDate><guid>http://www.blogjava.net/kook/articles/61511.html</guid><wfw:comment>http://www.blogjava.net/kook/comments/61511.html</wfw:comment><comments>http://www.blogjava.net/kook/articles/61511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kook/comments/commentRss/61511.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kook/services/trackbacks/61511.html</trackback:ping><description><![CDATA[
		<font face="Verdana" size="2">该 PreparedStatement 接口继承 Statement，并与之在两方面有所不同： <br /><br /><br />PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。 <br />包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN 参数的值在 SQL 语句创建时未被指定。相反的，该语句为每个 IN 参数保留一个问号（“？”）作为占位符。每个问号的值必须在该语句执行之前，通过适当的 setXXX 方法来提供。 <br /><br />由于 PreparedStatement 对象已预编译过，所以其执行速度要快于 Statement 对象。因此，多次执行的 SQL 语句经常创建为 PreparedStatement 对象，以提高效率。<br /><br />作为 Statement 的子类，PreparedStatement 继承了 Statement 的所有功能。另外它还添加了一整套方法，用于设置发送给数据库以取代 IN 参数占位符的值。同时，三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数。这些方法的 Statement 形式（接受 SQL 语句参数的形式）不应该用于 PreparedStatement 对象。<br /><br /><br />6.1.1 创建 PreparedStatement 对象<br />以下的代码段（其中 con 是 Connection 对象）创建包含带两个 IN 参数占位符的 SQL 语句的 PreparedStatement 对象： <br /><br />PreparedStatement pstmt = con.prepareStatement(<br />"UPDATE table4 SET m = ? WHERE x = ?");<br /><br />pstmt 对象包含语句 "UPDATE table4 SET m = ? WHERE x = ?"，它已发送给 DBMS，并为执行作好了准备。<br /><br /><br />6.1.2 传递 IN 参数<br />在执行 PreparedStatement 对象之前，必须设置每个 ? 参数的值。这可通过调用 setXXX 方法来完成，其中 XXX 是与该参数相应的类型。例如，如果参数具有 Java 类型 long，则使用的方法就是 setLong。setXXX 方法的第一个参数是要设置的参数的序数位置，第二个参数是设置给该参数的值。例如，以下代码将第一个参数设为 123456789，第二个参数设为 100000000： <br /><br />pstmt.setLong(1, 123456789);<br />pstmt.setLong(2, 100000000);<br /><br />一旦设置了给定语句的参数值，就可用它多次执行该语句，直到调用 clearParameters 方法清除它为止。<br /><br />在连接的缺省模式下（启用自动提交），当语句完成时将自动提交或还原该语句。<br /><br />如果基本数据库和驱动程序在语句提交之后仍保持这些语句的打开状态，则同一个 PreparedStatement 可执行多次。如果这一点不成立，那么试图通过使用 PreparedStatement 对象代替 Statement 对象来提高性能是没有意义的。<br /><br />利用 pstmt（前面创建的 PreparedStatement 对象），以下代码例示了如何设置两个参数占位符的值并执行 pstmt 10 次。如上所述，为做到这一点，数据库不能关闭 pstmt。在该示例中，第一个参数被设置为 "Hi"并保持为常数。在 for 循环中，每次都将第二个参数设置为不同的值：从 0 开始，到 9 结束。<br /><br />pstmt.setString(1, "Hi");<br />for (int i = 0; i &lt; 10; i++) {<br />pstmt.setInt(2, i);<br />int rowCount = pstmt.executeUpdate();<br />}<br /><br />6.1.3 IN 参数中数据类型的一致性<br />setXXX 方法中的 XXX 是 Java 类型。它是一种隐含的 JDBC 类型（一般 SQL 类型），因为驱动程序将把 Java 类型映射为相应的 JDBC 类型（遵循该 JDBC Guide中§8.6.2 “映射 Java 和 JDBC 类型”表中所指定的映射），并将该 JDBC 类型发送给数据库。例如，以下代码段将 PreparedStatement 对象 pstmt 的第二个参数设置为 44，Java 类型为 short： <br /><br />pstmt.setShort(2, 44);<br /><br />驱动程序将 44 作为 JDBC SMALLINT 发送给数据库，它是 Java short 类型的标准映射。<br /><br />程序员的责任是确保将每个 IN 参数的 Java 类型映射为与数据库所需的 JDBC 数据类型兼容的 JDBC 类型。不妨考虑数据库需要 JDBC SMALLINT 的情况。如果使用方法 setByte ，则驱动程序将 JDBC TINYINT 发送给数据库。这是可行的，因为许多数据库可从一种相关的类型转换为另一种类型，并且通常 TINYINT 可用于 SMALLINT 适用的任何地方。然而，对于要适用于尽可能多的数据库的应用程序，最好使用与数据库所需的确切的 JDBC 类型相应的 Java 类型。如果所需的 JDBC 类型是 SMALLINT，则使用 setShort 代替 setByte 将使应用程序的可移植性更好。<br /><br /><br />6.1.4 使用 setObject<br />程序员可使用 setObject 方法显式地将输入参数转换为特定的 JDBC 类型。该方法可以接受第三个参数，用来指定目标 JDBC 类型。将 Java Object 发送给数据库之前，驱动程序将把它转换为指定的 JDBC 类型。<br /><br />如果没有指定 JDBC 类型，驱动程序就会将 Java Object 映射到其缺省的 JDBC 类型（参见第 8.6.4 节中的表格），然后将它发送到数据库。这与常规的 setXXX 方法类似；在这两种情况下，驱动程序在将值发送到数据库之前，会将该值的 Java 类型映射为适当的 JDBC 类型。二者的差别在于 setXXX 方法使用从 Java 类型到 JDBC 类型的标准映射（参见第 8.6.2 节中的表格），而 setObject 方法使用从 Java Object 类型到 JDBC 类型的映射（参见第 8.6.4 节中的表格）。<br /><br />方法 setObject 允许接受所有 Java 对象的能力使应用程序更为通用，并可在运行时接受参数的输入。这种情况下，应用程序在编译时并不清楚输入类型。通过使用 setObject，应用程序可接受所有 Java 对象类型作为输入，并将其转换为数据库所需的 JDBC 类型。第 8.6.5 节中的表格显示了 setObject 可执行的所有可能转换。<br /><br /><br />6.1.5 将 JDBC NULL 作为 IN 参数发送<br />setNull 方法允许程序员将 JDBC NULL 值作为 IN 参数发送给数据库。但要注意，仍然必须指定参数的 JDBC 类型。<br /><br />当把 Java null 值传递给 setXXX 方法时（如果它接受 Java 对象作为参数），也将同样把 JDBC NULL 发送到数据库。但仅当指定 JDBC 类型时，方法 setObject 才能接受 null 值。<br /><br /><br />6.1.6 发送大的 IN 参数<br />setBytes 和 setString 方法能够发送无限量的数据。但是，有时程序员更喜欢用较小的块传递大型的数据。这可通过将 IN 参数设置为 Java 输入流来完成。当语句执行时，JDBC 驱动程序将重复调用该输入流，读取其内容并将它们当作实际参数数据传输。<br /><br />JDBC 提供了三种将 IN 参数设置为输入流的方法：setBinaryStream 用于含有未说明字节的流， setAsciiStream 用于含有 ASCII 字符的流，而 setUnicodeStream 用于含有 Unicode 字符的流。因为必须指定流的总长度，所以这些方法所采用的参数比其它的 setXXX 方法要多一个。这很有必要，因为一些数据库在发送数据之前需要知道其总的传送大小。<br /><br />以下代码例示了使用流作为 IN 参数来发送文件内容： <br /><br />java.io.File file = new java.io.File("/tmp/data");<br />int fileLength = file.length();<br />java.io.InputStream fin = new java.io.FileInputStream(file);<br />java.sql.PreparedStatement pstmt = con.prepareStatement(<br />"UPDATE Table5 SET stuff = ? WHERE index = 4");<br />pstmt.setBinaryStream (1, fin, fileLength);<br />pstmt.executeUpdate();<br /><br />当语句执行时，将反复调用输入流 fin 以传递其数据。<br /></font>
<img src ="http://www.blogjava.net/kook/aggbug/61511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kook/" target="_blank">kook</a> 2006-08-03 14:40 <a href="http://www.blogjava.net/kook/articles/61511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>