﻿<?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-自然-文章分类-integration</title><link>http://www.blogjava.net/masen/category/28516.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 27 May 2010 23:08:41 GMT</lastBuildDate><pubDate>Thu, 27 May 2010 23:08:41 GMT</pubDate><ttl>60</ttl><item><title>jdbc调用存储过程时，如何在将一个list型数据结构作为参数传入存储过程。(自己通过ibatis实现) </title><link>http://www.blogjava.net/masen/articles/171549.html</link><dc:creator>Masen</dc:creator><author>Masen</author><pubDate>Sat, 29 Dec 2007 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/masen/articles/171549.html</guid><wfw:comment>http://www.blogjava.net/masen/comments/171549.html</wfw:comment><comments>http://www.blogjava.net/masen/articles/171549.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/masen/comments/commentRss/171549.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/masen/services/trackbacks/171549.html</trackback:ping><description><![CDATA[<p>&nbsp;public void inputCusChargeList(CorChargeDTO corChargeDTO) throws PafaDAOException {<br />
//&nbsp;&nbsp;Map map=new HashMap();<br />
//&nbsp;&nbsp;map.put("partyNo",corChargeDTO.getPartyNo());<br />
//&nbsp;&nbsp;map.put("parentAccNum",corChargeDTO.getParentAccNum());<br />
//&nbsp;&nbsp;map.put("addTellerNo",corChargeDTO.getAddTellerNo());<br />
//&nbsp;&nbsp;map.put("auditTellerNo",corChargeDTO.getAuditTellerNo());<br />
//&nbsp;&nbsp;map.put("accList",corChargeDTO.getAccList());<br />
//&nbsp;&nbsp;this.getSqlMapClientTemplate().queryForObject("chargeAccManage_input",map);<br />
//&nbsp;&nbsp;logger.debug("retcode："+map.get("retcode"));<br />
//&nbsp;&nbsp;logger.debug("retmessage："+map.get("retmessage"));<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Connection con = null;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; CallableStatement stmt = null;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; String retcode="";<br />
&nbsp;&nbsp;&nbsp;&nbsp; String retmessage="";<br />
&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con = ((WLConnection)getSqlMapClientTemplate().getDataSource().getConnection()).getVendorConnection();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (con != null) {&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;ARRAY aArray = this.getArray(con,dbTypeUserName+".BCOMS_CORCHARGE_ACC_TYPE",dbTypeUserName+".BCOMS_CORCHARGE_ACC_TBL_TYPE",corChargeDTO.getAccList());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //该函数调用的第二三个参数必须大写 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt = con.prepareCall("call BCOMS_Corclient_others_pkg.bcoms_inputCorCharge_pro(?,?,?,?,?,?,?)"); //调用某个存储过程&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.setString(1,corChargeDTO.getPartyNo());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.setString(2,corChargeDTO.getParentAccNum());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.setString(3,corChargeDTO.getAddTellerNo());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.setString(4,corChargeDTO.getAuditTellerNo());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((OracleCallableStatement) stmt).setARRAY(5, aArray);&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.registerOutParameter(6, java.sql.Types.VARCHAR);&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.registerOutParameter(7, java.sql.Types.VARCHAR);&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.execute();&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retcode = stmt.getString(6);&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retmessage=stmt.getString(7);&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; logger.debug("retcode："+retcode);<br />
&nbsp;&nbsp;&nbsp;&nbsp; logger.debug("retmessage："+retmessage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new PafaRuntimeException("embis.bcoms.db.error",e);<br />
&nbsp;&nbsp;&nbsp;&nbsp; } finally {&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(stmt!=null){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.close();//释放数据库连接&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(con!=null){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;} catch (SQLException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;logger.error("关闭连接时发生异常", e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;throw new PafaRuntimeException("embis.bcoms.db.error",e);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;<br />
&nbsp;}<br />
<br />
&nbsp;private&nbsp; ARRAY getArray(Connection con, String OracleObj,&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String Oraclelist, List objlist) throws Exception {&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ARRAY list = null;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (objlist != null &amp;&amp; objlist.size() &gt; 0) {&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StructDescriptor structdesc = new StructDescriptor(OracleObj, con);&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STRUCT[] structs = new STRUCT[objlist.size()];&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] result = new Object[0];&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; objlist.size(); i++) {&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CorChargeDTO chargeDTO=&nbsp;(CorChargeDTO) objlist.get(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = new Object[6];//数组大小应和你定义的数据库对象(AOBJECT)的属性的个数&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[2] =chargeDTO.getAccNum() ;&nbsp; //将list中元素的数据传入result数组&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[3] = chargeDTO.getAccName();&nbsp; //&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; structs[i] = new STRUCT(structdesc, con, result);&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayDescriptor desc = ArrayDescriptor.createDescriptor(Oraclelist,&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con);&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list = new ARRAY(desc, con, structs);&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return list;&nbsp;&nbsp;&nbsp; <br />
&nbsp;} <br />
<br />
&nbsp;项目中采用的是Weblgoic 的数据源 ,JndiObjectFactoryBean ,批量导入list 类型 ,引入了weblgic lib 中oracle &nbsp;的jdbc的包,直接操作connection.<br />
<br />
<strong style="color: black; background-color: #ffff66">getVendorConnection</strong>()---------------RemoveInfectedConnectionsEnabled&nbsp; 设置上.</p>
<img src ="http://www.blogjava.net/masen/aggbug/171549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/masen/" target="_blank">Masen</a> 2007-12-29 15:14 <a href="http://www.blogjava.net/masen/articles/171549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jdbc调用存储过程时，如何在将一个list型数据结构作为参数传入存储过程。(转) </title><link>http://www.blogjava.net/masen/articles/171546.html</link><dc:creator>Masen</dc:creator><author>Masen</author><pubDate>Sat, 29 Dec 2007 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/masen/articles/171546.html</guid><wfw:comment>http://www.blogjava.net/masen/comments/171546.html</wfw:comment><comments>http://www.blogjava.net/masen/articles/171546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/masen/comments/commentRss/171546.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/masen/services/trackbacks/171546.html</trackback:ping><description><![CDATA[<div style="margin-top: 1px; margin-left: 15px">
<h2><a title="永久链接: jdbc调用存储过程时，如何在将一个list型数据结构作为参数传入存储过程。(转)" href="http://soul.javaeye.com/blog/116191">jdbc调用存储过程时，如何在将一个list型数据结构作为参数传入存储过程。(转)</a> </h2>
</div>
<div style="margin-top: 5px; margin-left: 15px"><strong>关键字:</strong> &nbsp; oracle,OracleCallableStatement,ARRAY&nbsp;&nbsp;&nbsp;&nbsp; </div>
<div style="margin-top: 10px; margin-left: 15px; overflow: auto">
<table width="100%">
    <tbody>
        <tr>
            <td>
            <div class="code_title">不过切记一点,调用Function会出问题,一定要是存储过程,不然会挂掉,以此作备忘,害我搞了一半天的~~~~</div>
            <div class="code_title">
            <div class="code_title">java 代码</div>
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="comment">/*&nbsp;处理传入的数组&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
                <li class=""><span>ArrayDescriptor&nbsp;desc&nbsp;=&nbsp;ArrayDescriptor.createDescriptor(</span><span class="string">"Oracle中自定义数据类型"</span><span>,&nbsp;conn); &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ARRAY&nbsp;array&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;oracle.sql.ARRAY(desc,&nbsp;conn,传入&nbsp;数据); &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oracleCallableStatement.setARRAY(</span><span class="number">1</span><span>,&nbsp;array);&nbsp;&nbsp;</span> </li>
            </ol>
            </div>
            </div>
            <div class="code_title">java 代码</div>
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span>当需要把插入多条数据的行为合并为一个事务时，可以考虑把一个list型数据作为参数传入存储过程， &nbsp;&nbsp;</span></span>
                <li class=""><span>可以调用jdbc内部实现类来实现，这些类在classes12.zip(oracle&nbsp;</span><span class="number">8</span><span>，别的版本可能是其他名字的zip包)。 &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;如： &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;需要将一个list传入存储过程。 &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;具体操作如下： &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;</span><span class="number">1</span><span>,建立数据库对象来映射list数据类型。 &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;--定义一个与list中各元素的数据类型相同的数据库对象 &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;CREATE&nbsp;TYPE&nbsp;AOBJECT&nbsp;AS&nbsp;OBJECT( &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aaaa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NUMBER(</span><span class="number">8</span><span>), &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bbbb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NUMBER(</span><span class="number">8</span><span>) &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;/ &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;--定义一个list数据库对象 &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;CREATE&nbsp;TYPE&nbsp;ALIST&nbsp;AS&nbsp;VARRAY(</span><span class="number">100</span><span>)&nbsp;OF&nbsp;AOBJECT &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;/ &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;</span><span class="number">2</span><span>,具体java代码如下： &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;java.sql.CallableStatement; &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;java.sql.Connection; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;java.sql.PreparedStatement; &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;java.util.ArrayList; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">/* </span>&nbsp;
                <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;*&nbsp;以下就是classes12.zip中的实现类 </span>&nbsp;</span>
                <li class="alt"><span><span class="comment">&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
                <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;oracle.jdbc.driver.OracleCallableStatement; &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;oracle.sql.ARRAY; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;oracle.sql.ArrayDescriptor; &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;oracle.sql.STRUCT; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;oracle.sql.StructDescriptor;&nbsp; &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;....... &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">long</span><span>&nbsp;addRecords(ArrayList&nbsp;list)&nbsp;{ &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;Connection&nbsp;con&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;CallableStatement&nbsp;stmt&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;backVal&nbsp;=&nbsp;</span><span class="number">0</span><span>; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;con&nbsp;=&nbsp;pool.getConnection(); &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(con&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{ &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ARRAY&nbsp;aArray&nbsp;=&nbsp;getArray(con,&nbsp;</span><span class="string">"AOBJECT"</span><span>,</span><span class="string">"ALIST"</span><span>,&nbsp;list);</span><span class="comment">//该函数调用的第二三个参数必须大写 </span><span>&nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt&nbsp;=&nbsp;con.prepareCall(</span><span class="string">"{call&nbsp;produce1(?,?)}"</span><span>);&nbsp;</span><span class="comment">//调用某个存储过程 </span><span>&nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((OracleCallableStatement)&nbsp;stmt).setARRAY(</span><span class="number">1</span><span>,&nbsp;aArray); &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.registerOutParameter(</span><span class="number">2</span><span>,&nbsp;java.sql.Types.INTEGER); &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.execute(); &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backVal&nbsp;=&nbsp;stmt.getInt(</span><span class="number">2</span><span>); &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;.... &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">finally</span><span>&nbsp;{ &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;....</span><span class="comment">//释放数据库连接 </span><span>&nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;backVal; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;} &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;ARRAY&nbsp;getArray(Connection&nbsp;con,&nbsp;String&nbsp;OracleObj, &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;String&nbsp;Oraclelist,&nbsp;ArrayList&nbsp;objlist)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;ARRAY&nbsp;list&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(objlist&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>&nbsp;&amp;&amp;&nbsp;objlist.size()&nbsp;&gt;&nbsp;</span><span class="number">0</span><span>)&nbsp;{ &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;StructDescriptor&nbsp;structdesc&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StructDescriptor(OracleObj,&nbsp;con); &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;STRUCT[]&nbsp;structs&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;STRUCT[objlist.size()]; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;Object[]&nbsp;result&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Object[</span><span class="number">0</span><span>]; &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">int</span><span>&nbsp;i&nbsp;=&nbsp;</span><span class="number">0</span><span>;&nbsp;i&nbsp;&lt;&nbsp;objlist.size();&nbsp;i++)&nbsp;{ &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Object[</span><span class="number">2</span><span>];</span><span class="comment">//数组大小应和你定义的数据库对象(AOBJECT)的属性的个数 </span><span>&nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result[</span><span class="number">0</span><span>]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Integer(..);&nbsp;&nbsp;</span><span class="comment">//将list中元素的数据传入result数组 </span><span>&nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result[</span><span class="number">1</span><span>]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Integer(..);&nbsp;&nbsp;</span><span class="comment">// </span><span>&nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;structs[i]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;STRUCT(structdesc,&nbsp;con,&nbsp;result); &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;ArrayDescriptor&nbsp;desc&nbsp;=&nbsp;ArrayDescriptor.createDescriptor(Oraclelist, &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con); &nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;ARRAY(desc,&nbsp;con,&nbsp;structs); &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="comment">//&nbsp;if </span><span>&nbsp;&nbsp;</span>
                <li class=""><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;list; &nbsp;&nbsp;</span>
                <li class="alt"><span>&nbsp;&nbsp;}&nbsp;</span><span class="comment">//&nbsp;function</span><span>&nbsp;&nbsp;</span> </li>
            </ol>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<img src ="http://www.blogjava.net/masen/aggbug/171546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/masen/" target="_blank">Masen</a> 2007-12-29 15:07 <a href="http://www.blogjava.net/masen/articles/171546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>