﻿<?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-csusky-随笔分类-JDBC</title><link>http://www.blogjava.net/csusky/category/29507.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 19 Feb 2008 07:16:13 GMT</lastBuildDate><pubDate>Tue, 19 Feb 2008 07:16:13 GMT</pubDate><ttl>60</ttl><item><title>JDBC中的连接方式 thin模式  和   DataSource方式</title><link>http://www.blogjava.net/csusky/archive/2008/02/19/180599.html</link><dc:creator>晓宇</dc:creator><author>晓宇</author><pubDate>Tue, 19 Feb 2008 02:22:00 GMT</pubDate><guid>http://www.blogjava.net/csusky/archive/2008/02/19/180599.html</guid><wfw:comment>http://www.blogjava.net/csusky/comments/180599.html</wfw:comment><comments>http://www.blogjava.net/csusky/archive/2008/02/19/180599.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/csusky/comments/commentRss/180599.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/csusky/services/trackbacks/180599.html</trackback:ping><description><![CDATA[<span style="font-size: 8pt"><span style="font-size: 8pt">一、最常用的是thin模式&nbsp;&nbsp; 利用DriverManager得到Connection<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; 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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">Class.forName(</span><span style="color: #000000">"</span><span style="color: #000000">oracle.jdbc.driver.OracleDriver</span><span style="color: #000000">"</span><span style="color: #000000">).newInstance();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />String&nbsp;url</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">jdbc:oracle:thin:@localhost:1521:orcl</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">orcl为数据库的SID&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">String&nbsp;user</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">test</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />String&nbsp;password</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">test</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Connection&nbsp;conn</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DriverManager.getConnection(url,user,password);</span></div>
<br />
二、JDBC的另外一种方式是三层结构，就是在应用服务器(tomcat/weblogic)上面建立DataSource
<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"  alt="" /><span style="color: #000000">Context&nbsp;ctx</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InitiaContext(Hashtable&nbsp;env);<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />DataSource&nbsp;ds</span><span style="color: #000000">=</span><span style="color: #000000">(DataSource)ctx.lookUp(</span><span style="color: #000000">"</span><span style="color: #000000">jdbc/OraDB</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Connection&nbsp;con</span><span style="color: #000000">=</span><span style="color: #000000">ds.getConnection();</span></div>
<br />
<div>应用中配置如下：未测试，仅转载。</div>
<div>&nbsp;&nbsp;&nbsp; </div>
<div style="margin: 0mm 0mm 0pt"><strong><span style="font-size: 10pt">一、配置</span></strong><strong><span style="font-size: 10pt">server.xml</span></strong></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">找到配置发布应用程序的地方：</span><span style="font-size: 10pt">&lt;Context path=&#8221;&#8221; docBase=&#8221;d:\_webs&#8221;/&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">将这个改为：</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&lt;Context path="" docBase="D:\ _web" debug="0"&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt; color: red">&lt;!—</span><span style="font-size: 10pt; color: red">声明一个数据源</span><span style="font-size: 10pt; color: red">,</span><span style="font-size: 10pt; color: red">程序通过</span><span style="font-size: 10pt; color: red">JNDI</span><span style="font-size: 10pt; color: red">找到该数据源。</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt; color: red">name</span><span style="font-size: 10pt; color: red">指出数据源的名称为</span><span style="font-size: 10pt; color: red">jdbc/OraDB,</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt; color: red">auth</span><span style="font-size: 10pt; color: red">表明连接池管理的权限，</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt; color: red">type</span><span style="font-size: 10pt; color: red">指出该数据源的类型</span><span style="font-size: 10pt; color: red">--&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&lt;Resource name="jdbc/OraDB" auth="SERVLET" type="javax.sql.DataSource"/&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt; color: red">&lt;!—</span><span style="font-size: 10pt; color: red">配置该数据源的属性</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt; color: red">name</span><span style="font-size: 10pt; color: red">指出数据源的名称</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt; color: red">--&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&lt;ResourceParams name="jdbc/OraDB"&gt;</span></div>
<div style="margin: 0mm 0mm 0pt 10.5pt"><span style="font-size: 10pt">&nbsp;</span></div>
<div style="margin: 0mm 0mm 0pt 10.5pt"><span style="font-size: 10pt; color: red">&lt;!—</span><span style="font-size: 10pt; color: red">连接数据库的用户名</span><span style="font-size: 10pt; color: red">--&gt;</span></div>
<div style="margin: 0mm 0mm 0pt 10.5pt"><span style="font-size: 10pt">&lt;parameter&gt;</span></div>
<div style="margin: 0mm 0mm 0pt; text-indent: 42pt"><span style="font-size: 10pt">&lt;name&gt;username&lt;/name&gt;</span></div>
<div style="margin: 0mm 0mm 0pt 10.5pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;chenws&lt;/value&gt;</span></div>
<div style="margin: 0mm 0mm 0pt 10.5pt"><span style="font-size: 10pt">&lt;/parameter&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;<span style="color: red">&lt;!—</span></span><span style="font-size: 10pt; color: red">连接数据库的密码</span><span style="font-size: 10pt; color: red">--&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&lt;parameter&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;name&gt;password&lt;/name&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;admin&lt;/value&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&lt;/parameter&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;<span style="color: red">&lt;!—</span></span><span style="font-size: 10pt; color: red">连接数据库的</span><span style="font-size: 10pt; color: red">jdbc</span><span style="font-size: 10pt; color: red">驱动程序</span><span style="font-size: 10pt; color: red">--&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&lt;parameter&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;driverClassName&lt;/name&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;value&gt;oracle.jdbc.driver.OracleDriver&lt;/value&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&lt;/parameter&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;<span style="color: red">&nbsp;&lt;!—</span></span><span style="font-size: 10pt; color: red">连接数据库的</span><span style="font-size: 10pt; color: red">url--&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&lt;parameter&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;url&lt;/name&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;value&gt;jdbc:oracle:thin:@192.168.39.215:1521:jetchin&lt;/value&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&lt;/parameter&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&lt;/ResourceParams&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&lt;/Context&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">实际上，配置数据源的属性不止以上那些，还有其他的比如连接时间的限制，连接数量的限制等等。这里我们并没有给出，只是使用了</span><span style="font-size: 10pt">tomcat</span><span style="font-size: 10pt">提供的默认属性罢了。</span></div>
<div style="margin: 0mm 0mm 0pt"><strong><span style="font-size: 10pt; color: #ff9900">注意：要让该数据源有效，必须将</span></strong><strong><span style="font-size: 10pt; color: #ff9900">oracle</span></strong><strong><span style="font-size: 10pt; color: #ff9900">的</span></strong><strong><span style="font-size: 10pt; color: #ff9900">classes12.zip</span></strong><strong><span style="font-size: 10pt; color: #ff9900">改名为</span></strong><strong><span style="font-size: 10pt; color: #ff9900">classes12.jar</span></strong><strong><span style="font-size: 10pt; color: #ff9900">，然后拷贝到</span></strong></div>
<div style="margin: 0mm 0mm 0pt"><strong><span style="font-size: 10pt; color: #ff9900">tomcat</span></strong><strong><span style="font-size: 10pt; color: #ff9900">安装目录下的</span></strong><strong><span style="font-size: 10pt; color: #ff9900">/common/lib</span></strong><strong><span style="font-size: 10pt; color: #ff9900">中。</span></strong></div>
<div style="margin: 0mm 0mm 0pt"><strong><span style="font-size: 10pt; color: #ff9900">&nbsp;</span></strong></div>
<div style="margin: 0mm 0mm 0pt"><strong><span style="font-size: 10pt">二、配置</span></strong><strong><span style="font-size: 10pt">web.xml</span></strong></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">到</span><span style="font-size: 10pt">web</span><span style="font-size: 10pt">应用程序目录下的</span><span style="font-size: 10pt">web-inf</span><span style="font-size: 10pt">中，打开</span><span style="font-size: 10pt">web.xml</span><span style="font-size: 10pt">，加入如下的配置：</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">定义数据源参照：</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&lt;resource-ref&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;<span style="color: red">&lt;!—</span></span><span style="font-size: 10pt; color: red">数据源描述，可有可无</span><span style="font-size: 10pt; color: red">--&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&lt;description&gt;Oracle Datasource example&lt;/description&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;<span style="color: red">&nbsp;&lt;!--</span></span><span style="font-size: 10pt; color: red">数据源名称</span><span style="font-size: 10pt; color: red">--&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&lt;res-ref-name&gt;jdbc/OraDB&lt;/res-ref-name&gt; </span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;<span style="color: red">&nbsp;&lt;!—</span></span><span style="font-size: 10pt; color: red">数据源类型</span><span style="font-size: 10pt; color: red">--&gt;</span></div>
<div style="margin: 0mm 0mm 0pt; text-indent: 10.5pt"><span style="font-size: 10pt">&lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;<span style="color: red">&lt;!—</span></span><span style="font-size: 10pt; color: red">连接池管理权限</span><span style="font-size: 10pt; color: red">--&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&nbsp;&lt;res-auth&gt;SERVLET&lt;/res-auth&gt;</span></div>
<div style="margin: 0mm 0mm 0pt"><span style="font-size: 10pt">&lt;/resource-ref&gt;</span></div>
<br />
<br />
另外在weblogic中进行配置可参考如下文章：<br />
<br />
<br />
<strong>WebLogic Server7.0中Oracle的JDBC Pool/DataSource配置指南 </strong>
<table cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr height="10">
            <td colspan="2">　</td>
        </tr>
        <tr>
            <td width="20">　</td>
            <td class="text_label_medium">
            <p style="margin-bottom: 0cm" align="left">第一步，去oracle下载最新的 oracle JDBC driver。 <br />
            <br />
            一共2个文件，ojdbc14.jar和nls_charset12.zip。 <br />
            第一个文件是驱动程序所在，第二个是支持国际化的包。 </p>
            <p>接下来，把这两个文件加入 WLS 的 classpath。 <br />
            修改 Bea\Weblogic\server\bin\startWLS.cmd（或者相应的Unix启动文件，.sh结尾的），</p>
            <p>在文件开头加入 PRE_CLASSPATH=C:\ojdbc14.jar;C:\nls_charset12.zip。注意文件的路径。</p>
            <p>最后可以考虑把Bea\Weblogic\server\lib\classes12.zip删除，我不保证正确性，只是怕有兼容性问题。 </p>
            <p>最后，启动weblogic server，进入console，在Connection Pool里边，填入一下资料。 <br />
            <br />
            <strong>General栏目： </strong><br />
            <br />
            Name：MyOracle_CP </p>
            <p>URL：jdbc:oracle:thin:@server:port:sid （自己按照情况修改！） <br />
            比如：jdbc:oracle:thin:@192.168.0.2:1521:Crystal </p>
            <p>DriverName：oracle.jdbc.driver.OracleDriver </p>
            <p>Properties <br />
            user=SYS （这里是用户，最好不要用SYS，SYSTEM等系统用户）</p>
            <p>ACL Name： （空） </p>
            <p>password： 用户密码 </p>
            <p>&nbsp;</p>
            <p><br />
            如图：
            <p style="margin-bottom: 0cm" align="left"><img height="464" src="http://dev2dev.bea.com.cn/images/school/server030606_10/CONN1.jpg" width="586" align="left" border="0" name="Graphic1"  alt="" /><br clear="left" />
            <strong><br />
            Connection栏目： </strong><br />
            <br />
            CapacityIncrement = 50<br />
            MaxCapacity = 100<br />
            Capacity Increment: 5 <br />
            Login Delay Seconds: 0 seconds <br />
            Refresh Period: 10 minutes <br />
            Supports Local Transaction 不要打勾 <br />
            Allow Shrinking 打勾 <br />
            Shrink Period: 15 minutes <br />
            Prepared Statement Cache Size: 5 </p>
            <p>如图：<br />
            <br />
            <p style="margin-bottom: 0cm" align="left"><img height="450" src="http://dev2dev.bea.com.cn/images/school/server030606_10/CONN2.jpg" width="535" align="left" border="0" name="Graphic2"  alt="" /><br clear="left" />
            <font color="#800000"><font face="宋体"><font size="4"><span lang="en-US"><font color="#000000"><br />
            </font></span></font><span lang="en-US"><font color="#000000">Test栏目： <br />
            <br />
            TestTableName：SCOTT.EMP （这里需要改动，适应你自己的表，wls用来做连接测试用的） <br />
            TestConnectionsOnReleasetrue 打勾<br />
            TestConnectionsOnReservetrue 打勾<br />
            <br />
            最后，点击Apply，然后去Targets，选中你的server，点右箭头，使你的server进入Chosen栏目，最后Apply。（如图） </font></span><font size="4"><span lang="en-US"><font color="#000000"><br />
            </font></span></font></font></font><font color="#800000"><font face="宋体"><font size="4"><span lang="en-US"><font color="#000000"><br />
            </font></span></font></font></font></p>
            <p style="margin-bottom: 0cm" align="left"><img height="300" src="http://dev2dev.bea.com.cn/images/school/server030606_10/CONN3.jpg" width="515" align="left" border="0" name="Graphic3"  alt="" /><br clear="left" />
            <font color="#800000"><font face="宋体"><font size="4"><span lang="en-US"><br />
            </span></font><span lang="en-US"><font color="#000000">查看dos窗口，是否有错误，如果没有则继续，如果有的话，自己查看填写的内容。</font></span><font size="4"><span lang="en-US"> </span></font></font></font></p>
            <p>至此，Connection Pool已经配置完毕。 <br />
            <br />
            <br />
            接下来，该配置(TX)DataSource了。 </p>
            <p>从昨天的panel里边，单击DataSources/TX DataSources，进入配置界面。</p>
            <p>1。单击Configure a new JDBC Tx Data Source..配置新的datasource<br />
            <br />
            2。填入以下数据：<br />
            Name: MyDataSource （自己随便起的）<br />
            JNDI: jdbc/OracleDS （这里就是你lookup的时候填入的名字，自己想吧。<br />
            Pool Name: MyOracle_CP （一定要对应你的Connection Pool的 Name）<br />
            <br />
            把后边两项打上勾。<br />
            <br />
            第一个是模拟2阶提交模式，如果数据库driver本身不支持的话。（就是XA标准，分布式提交）<br />
            <br />
            第二个是 行预读。如图：</p>
            <p><img height="394" src="http://dev2dev.bea.com.cn/images/school/server030606_10/DS1.jpg" width="538" align="left" border="0" name="Graphic4"  alt="" /></p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>点击Create，然后去Targets里边，把你的 server放入chosen，点击apply。。</p>
            <p>配置完成。。。</p>
            <p>最后检查你的DataSource是否已经成功部属：</p>
            <p>进入你的server的JNDI Tree，很容易就可以看到的。：）。如图：</p>
            <p><img height="377" src="http://dev2dev.bea.com.cn/images/school/server030606_10/CHECK.jpg" width="958" align="left" border="0" name="Graphic5"  alt="" /></p>
            <p><br />
            </p>
            <p><br />
            <br />
            </p>
            </td>
        </tr>
    </tbody>
</table>
<br />
</span></span>
<img src ="http://www.blogjava.net/csusky/aggbug/180599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/csusky/" target="_blank">晓宇</a> 2008-02-19 10:22 <a href="http://www.blogjava.net/csusky/archive/2008/02/19/180599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC中的批处理</title><link>http://www.blogjava.net/csusky/archive/2008/02/19/180592.html</link><dc:creator>晓宇</dc:creator><author>晓宇</author><pubDate>Tue, 19 Feb 2008 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/csusky/archive/2008/02/19/180592.html</guid><wfw:comment>http://www.blogjava.net/csusky/comments/180592.html</wfw:comment><comments>http://www.blogjava.net/csusky/archive/2008/02/19/180592.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/csusky/comments/commentRss/180592.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/csusky/services/trackbacks/180592.html</trackback:ping><description><![CDATA[<p><font style="font-size: 8pt" face="#ce_temp_font#"><span style="font-size: 8pt"><font face="#ce_temp_font#">JDBC中 有两个批处理函数&nbsp; addBatch(String)&nbsp; 和 executeBatch();<br />
<br />
有两种方法可以进行批处理 第一种是用Statement&nbsp; 另外一种是PreparedStatement<br />
<br />
一、使用Statement&nbsp; <br />
</p>
<p>&nbsp;</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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">Statement&nbsp;sm</span><span style="color: #000000">=</span><span style="color: #000000">con.createStatement();<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />String&nbsp;sql</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">insert&nbsp;into&nbsp;errbills&nbsp;values()</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />sm.addBatch(sql);<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />sql</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">delete&nbsp;from&nbsp;errbills&nbsp;where&nbsp;bno='124'</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />sm.addBatch(sql);<br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />sm.executeBatch();</span></div>
<p><br />
二、使用PreparedStatement</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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">String&nbsp;sql</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">delete&nbsp;from&nbsp;errblls&nbsp;where&nbsp;bno=?</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />PreparedStatement&nbsp;ps</span><span style="color: #000000">=</span><span style="color: #000000">con.prepareStatement(sql);<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img id="Codehighlighter1_117_158_Open_Image" onclick="this.style.display='none'; Codehighlighter1_117_158_Open_Text.style.display='none'; Codehighlighter1_117_158_Closed_Image.style.display='inline'; Codehighlighter1_117_158_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_117_158_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_117_158_Closed_Text.style.display='none'; Codehighlighter1_117_158_Open_Image.style.display='inline'; Codehighlighter1_117_158_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">10</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_117_158_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 alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_117_158_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;ps.setString(i);<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;ps.addBatch();<br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />ps.executeBatch();<br />
</span><span style="color: #008080">8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<p>注意使用Statement和PreparedStatement的区别&nbsp; Statement的addBatch(String s)是带参数的(所要执行的SQL语句) 而PreparedStatement是不带参数的</font></p>
<p>在JDBC中使用批处理可以提高执行速度，因为我们不需要维护多条语句，所有的操作都是在一条语句里面完成，这样数据库服务器不必要为每条语句都分配和维护资源(指针等)，可以减轻数据库服务器的压力</span></font></p>
<img src ="http://www.blogjava.net/csusky/aggbug/180592.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/csusky/" target="_blank">晓宇</a> 2008-02-19 09:50 <a href="http://www.blogjava.net/csusky/archive/2008/02/19/180592.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>