<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title> 恕</title>
    <description>己之不欲，勿施于人。</description>
    <link>http://viwo.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>用JavaDBF操作（读、写）DBF文件</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/106065" style="color:red;">http://viwo.javaeye.com/blog/106065</a>&nbsp;
          发表时间: 2007年07月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">用</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">JavaDBF</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">操作（读、写）</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">DBF</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">文件</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">最近的一个项目需要动态生成</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">DBF</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">文件，用到</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">JavaDBF</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">，简单介绍一下</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">官方网站：</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><a href="http://javadbf.sarovar.org/"><font color="#800080">http://javadbf.sarovar.org/</font></a><o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">官方英文指南：</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><a href="http://sarovar.org/docman/view.php/32/23/javadbf-tutorial.html"><font color="#800080">http://sarovar.org/docman/view.php/32/23/javadbf-tutorial.html</font></a><o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">最新版本：</span><st1:chsdate isrocdate="False" month="12" day="30" islunardate="False" w:st="on" year="1899"><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">0.4.0</span></st1:chsdate><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">，最后发布时间还是在</span><st1:chsdate isrocdate="False" month="4" day="1" islunardate="False" w:st="on" year="2004"><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">2004</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">年</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">4</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">月</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">1</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">日</span></st1:chsdate><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">，看来</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">DBF</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">真是老了。老归老，有些时候还是得用。</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">下面是分别是读取和写</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">DBF</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">文件以及其他操作函数（关键信息的解释我放在了注释里，这样看起来会更方便）：</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">读取</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">DBF</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">文件</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">:<o:p></o:p></span></p>
<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><o:p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;readDBF(String&nbsp;path) &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;fis&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//读取文件的输入流 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fis&nbsp;&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;FileInputStream(path); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//根据输入流初始化一个DBFReader实例，用来读取DBF文件信息 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBFReader&nbsp;reader&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DBFReader(fis);&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//调用DBFReader对实例方法得到path文件中字段的个数 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;fieldsCount&nbsp;=&nbsp;reader.getFieldCount(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//取出字段信息 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(&nbsp;</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;&nbsp;i&lt;fieldsCount;&nbsp;i++)&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBFField&nbsp;field&nbsp;=&nbsp;reader.getField(i); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(field.getName()); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[]&nbsp;rowValues; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//一条条取出path文件中记录 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>((rowValues&nbsp;=&nbsp;reader.nextRecord())&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>)&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(&nbsp;</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;&nbsp;i&lt;rowValues.length;&nbsp;i++)&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(rowValues[i]); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">catch</span><span>(Exception&nbsp;e)&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">finally</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fis.close(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span class="keyword">catch</span><span>(Exception&nbsp;e){} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">写</span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">DBF</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">文件：</span></p>
<span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">
<div class="code_title">java 代码</div>
</span>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span lang="EN-US" style="mso-font-kerning: 0pt"><span style="mso-tab-count: 1"></span></span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"></span></p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;writeDBF(String&nbsp;path) &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;OutputStream&nbsp;fos&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="keyword">try</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//定义DBF文件字段 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBFField[]&nbsp;fields&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DBFField[</span><span class="number">3</span><span>]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//分别定义各个字段信息，setFieldName和setName作用相同， </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//只是setFieldName已经不建议使用 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">0</span><span>]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DBFField(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//fields[0].setFieldName(&quot;emp_code&quot;); </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">0</span><span>].setName(</span><span class="string">&quot;semp_code&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">0</span><span>].setDataType(DBFField.FIELD_TYPE_C); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">0</span><span>].setFieldLength(</span><span class="number">10</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">1</span><span>]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DBFField(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//fields[1].setFieldName(&quot;emp_name&quot;); </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">1</span><span>].setName(</span><span class="string">&quot;emp_name&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">1</span><span>].setDataType(DBFField.FIELD_TYPE_C); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">1</span><span>].setFieldLength(</span><span class="number">20</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">2</span><span>]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DBFField(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//fields[2].setFieldName(&quot;salary&quot;); </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">2</span><span>].setName(</span><span class="string">&quot;salary&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">2</span><span>].setDataType(DBFField.FIELD_TYPE_N); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">2</span><span>].setFieldLength(</span><span class="number">12</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[</span><span class="number">2</span><span>].setDecimalCount(</span><span class="number">2</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//DBFWriter&nbsp;writer&nbsp;=&nbsp;new&nbsp;DBFWriter(new&nbsp;File(path)); </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//定义DBFWriter实例用来写DBF文件 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBFWriter&nbsp;writer&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DBFWriter(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//把字段信息写入DBFWriter实例，即定义表结构 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.setFields(fields); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//一条条的写入记录 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[]&nbsp;rowData&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Object[</span><span class="number">3</span><span>]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData[</span><span class="number">0</span><span>]&nbsp;=&nbsp;</span><span class="string">&quot;1000&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData[</span><span class="number">1</span><span>]&nbsp;=&nbsp;</span><span class="string">&quot;John&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData[</span><span class="number">2</span><span>]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Double(</span><span class="number">5000.00</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.addRecord(rowData); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Object[</span><span class="number">3</span><span>]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData[</span><span class="number">0</span><span>]&nbsp;=&nbsp;</span><span class="string">&quot;1001&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData[</span><span class="number">1</span><span>]&nbsp;=&nbsp;</span><span class="string">&quot;Lalit&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData[</span><span class="number">2</span><span>]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Double(</span><span class="number">3400.00</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.addRecord(rowData); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Object[</span><span class="number">3</span><span>]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData[</span><span class="number">0</span><span>]&nbsp;=&nbsp;</span><span class="string">&quot;1002&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData[</span><span class="number">1</span><span>]&nbsp;=&nbsp;</span><span class="string">&quot;Rohit&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowData[</span><span class="number">2</span><span>]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Double(</span><span class="number">7350.00</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.addRecord(rowData); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//定义输出流，并关联的一个文件 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;FileOutputStream(path); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//写入数据 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.write(fos); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//writer.write(); </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;}</span><span class="keyword">catch</span><span>(Exception&nbsp;e) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="keyword">finally</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos.close(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span class="keyword">catch</span><span>(Exception&nbsp;e){} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none">注意:writer.addRecord(rowData)时并不真正写入数据，在最后writer.write(fos)时才会把数据写入DBF文件，之前addRecord<font face="Arial">的数据暂时存放在内存中。如果数据量过大，这种方式显然不适合，内存中存储的数据过多，所以JavaDBF提供了另外一种机制来解决这个问题：Sync Mode（同步模式）。使用方法如下：</font></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><font face="Arial">用</font></span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">new DBFWriter(new File(path))实例化DBFWriter类，最后写入数据时用writer.write()，这样在每次addRecord时数据就被写入的DBF文件中。</span></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">因为初始化DBFWriter时传递了DBF文件，所以不用再定义DBF表结构，如果你定义并加载表结构会报异常。</span></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"></span>&nbsp;</p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"></span>&nbsp;下面这个函数会根据你传入的数据信息自动生成DBF文件，这样以后我们只要构造好数组，就可以直接得到DBF文件，不用每次都去写重复的代码。</p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none">&nbsp;</p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"></span></p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;generateDbfFromArray( &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;dbfName, &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;strutName, &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">byte</span><span>[]&nbsp;strutType, &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>[]&nbsp;strutLength, &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[][]&nbsp;data &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;OutputStream&nbsp;fos&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;fieldCount&nbsp;=&nbsp;strutName.length; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBFField[]&nbsp;fields&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DBFField[fieldCount]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;i&lt;fieldCount;i++) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[i]&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DBFField(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[i].setName(strutName[i]); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[i].setDataType(strutType[i]); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields[i].setFieldLength(strutLength[i]); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBFWriter&nbsp;writer&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DBFWriter(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.setFields(fields); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;i&lt;fieldCount;i++) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.addRecord(data[i]); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;FileOutputStream(dbfName); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.write(fos); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">catch</span><span>(Exception&nbsp;e) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">finally</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos.close(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span class="keyword">catch</span><span>(Exception&nbsp;e){} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none">&nbsp;</p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">可以看到定义JavaDBF表结构或者添加数据时是通过传递数组实现，也就是说只要我们有了这些用来构造表结果和表示结果集的数组就有了DBF文件，那么我们可以通过类似下面这样的函数把ResultSet信息转换成数组信息。</span></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"></span></p>
<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><font face="Arial">
<div class="code_title">java 代码</div>
</font></span><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt"><font face="Arial">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;ResultsetToArray(ResultSet&nbsp;rs) &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSetMetaData&nbsp;meta&nbsp;=&nbsp;rs.getMetaData(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;columnCount&nbsp;=&nbsp;meta.getColumnCount(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;strutName&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;String[columnCount]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">byte</span><span>[]&nbsp;strutType&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;</span><span class="keyword">byte</span><span>[columnCount]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.last(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;itemCount&nbsp;=&nbsp;rs.getRow(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.first(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[][]&nbsp;data&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Object[columnCount][itemCount]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;i&lt;columnCount;i++) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strutType[i]&nbsp;=&nbsp;(</span><span class="keyword">byte</span><span>)meta.getColumnType(i); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strutName[i]&nbsp;=&nbsp;meta.getColumnName(i); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;rs.next();i++) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;j=</span><span class="number">0</span><span>;j&lt;columnCount;j++) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data[i][j]&nbsp;=&nbsp;rs.getObject(j); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">catch</span><span>(Exception&nbsp;e) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none">细心的读者可能会发现：strutType[i] = (<strong><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: #7f0055; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">byte</span></strong><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">)meta.getColumnType(i)这条语句是不可靠的，的却，这里的代码我省略了，JavaDBF中的字段类型表示和ResultSetMetaData中的字段类型表示应该是不一致的，这里做一个类型映射和转换即可。</span></p>
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none">&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</font></span></o:p></span>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/106065#comments" style="color:red;">已有 <strong>9</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 27 Jul 2007 11:17:33 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/106065</link>
        <guid>http://viwo.javaeye.com/blog/106065</guid>
      </item>
      <item>
        <title>原创Full-Stack框架VIWO开源首发（附源码、示例、教程）</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/99735" style="color:red;">http://viwo.javaeye.com/blog/99735</a>&nbsp;
          发表时间: 2007年07月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">有人说不要重新发明轮子，我说你不能总用别人的轮子。也许VIWO是个木头轮子，也许VIWO不是很结实，经不起大的颠簸，也许VIWO微不足道，你甚至不屑一顾，但是我想：Struts也好Spring也好，iBatis也好，起初无非就是个冲动、想法、无奈一点一点发展起来。</font></p>
<p><font face="Arial">今天我把我写的一些小程序打成包，命名叫做VIWO开源发布在这里，说不上为中国的开源界做什么贡献，就是想抛砖引玉，能让更多的高手把你们写的东西共享出来，让大家一起学习共同进步，而不是泛泛而谈新新技术，求新求变固然无可厚非，只是&ldquo;勿在浮沙筑高台&rdquo;。或者你有兴趣拿这VIWO的源代码，添加些新功能，修改些BUG,，亦或者给几块板砖，我都会感激不尽。</font></p>
<p><font face="Arial">因为传输速度，VIWO发布包，源码，示例放在Google Code上面了（JavaEye的访问速度可能和网段有关，我用大连网通访问速度奇慢，文章发好几遍才能发全）。</font></p>
<p><font face="Arial">下载页面：<a href="http://code.google.com/p/viwo/downloads/list">http://code.google.com/p/viwo/downloads/list</a><br />
直接下载地址： <br />
完整示例：<a href="http://viwo.googlecode.com/files/VIWO_Example.rar">viwo-example.rar</a><br />
发布程序：<a href="http://viwo.googlecode.com/files/viwo-0.4.3.jar">viwo-0.4.3.jar</a><br />
源码：<a href="http://viwo.googlecode.com/files/viwo-0.4.3-src.jar">viwo-0.4.3-src.jar</a></font></p>
<p><font face="Arial"></font>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/99735#comments" style="color:red;">已有 <strong>25</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 10 Jul 2007 11:57:27 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/99735</link>
        <guid>http://viwo.javaeye.com/blog/99735</guid>
      </item>
      <item>
        <title>Groovy 1.1-beta-1发布，加入对annotations的支持</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/76754" style="color:red;">http://viwo.javaeye.com/blog/76754</a>&nbsp;
          发表时间: 2007年05月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial"><a href="http://docs.codehaus.org/display/GROOVY/2007/04/30/Groovy+1.1-beta-1+with+annotation+support">Groovy 1.1-beta-1发布</a>，成为JVM平台下（除Java外）第一个也是目前唯一的支持annotations的语言。</font></p>
<p>同时也加入了对Java 5静态导入（<font face="Arial">static imports</font>）的支持。</p>
<p>Groovy最近在<span class="nobr"><a href="http://jax.de/konferenzen/jax07/index_eng.php">JAX</a>（德国最重要的Java大会）获得最具创新和创造性项目（most innovative and creative projects）头奖的称号。</span></p>
<p><span class="nobr"><font face="Arial"><a href="http://www.tiobe.com/index.htm?tiobe_index">Tiobe</a>的最新排行榜显示Groovy将要跨入前50名。虽然和Ruby相比还有很大差距，但是这种增长的势头和这些最新动作是否预示着Groovy在不远的将来会有所作为？你是怎么想的呢？</font></span></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/76754#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 May 2007 09:15:53 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/76754</link>
        <guid>http://viwo.javaeye.com/blog/76754</guid>
      </item>
      <item>
        <title>对Java EE的十大不当使用导致的性能问题</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/76470" style="color:red;">http://viwo.javaeye.com/blog/76470</a>&nbsp;
          发表时间: 2007年05月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">Vincent Partington近两个半月来在他的博客上陆续发表了关注Java EE平台性能问题的文章</font></p>
<p>即对<font face="Arial">Java EE的十大不当使用导致的性能问题</font></p>
<p><font face="Arial">#10 - <a href="http://blog.xebia.com/2007/02/18/ejapp-top-10-countdown-10-excessive-logging/" target="Excessive logging">Excessive logging</a><br />
#9 - <a href="http://blog.xebia.com/2007/02/25/ejapp-top-10-countdown-9-incorrect-application-server-configuration/">Incorrect application server configuration<br />
</a>#8 - <a href="http://blog.xebia.com/2007/03/09/ejapp-top-10-countdown-8-incorrect-usage-of-java-ee/">Incorrect usage of Java EE<br />
</a>#7 - <a href="http://blog.xebia.com/2007/03/19/ejapp-top-10-countdown-7-unnecessary-use-of-xml/">Unnecessary use of XML</a><br />
#6 - <a href="http://blog.xebia.com/2007/03/26/ejapp-top-10-countdown-6-improper-caching/">Improper caching<br />
</a>#5 - <a href="http://blog.xebia.com/2007/04/02/ejapp-top-10-countdown-5-excessive-memory-usage/">Excessive memory usage<br />
</a>#4 - <a href="http://blog.xebia.com/2007/04/16/ejapp-top-10-countdown-4-badly-performing-libraries/">Badly performing libraries<br />
</a>#3 - <a href="http://blog.xebia.com/2007/04/22/ejapp-top-10-countdown-3-incorrectly-implemented-concurrency/">Incorrectly implemented concurrency<br />
</a>#2 - <a href="http://blog.xebia.com/2007/04/25/ejapp-top-10-countdown-2-unnecessary-remoting/">Unnecessary remoting</a><br />
#1 - <a href="http://blog.xebia.com/2007/04/29/ejapp-top-10-countdown-1-incorrect-database-usage/">Incorrect database usage</a></font></p>
<p>最后一篇中作者给出了一些建议：</p>
<p>1&nbsp; Java开发人员应该始终关注应用程序的性能问题。</p>
<p>2&nbsp; Java开发人员应该同能够帮助他提高应用程序性能的人如DBA一起工作。</p>
<p>3&nbsp; 最后作者推荐了一个Java性能调优网站 <font face="Arial"><a href="http://www.javaperformancetuning.com/tips/index.shtml">Java Performance Tuning</a>&nbsp;。</font></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/76470#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 01 May 2007 10:05:34 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/76470</link>
        <guid>http://viwo.javaeye.com/blog/76470</guid>
      </item>
      <item>
        <title>为学日益 为道日损</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/72526" style="color:red;">http://viwo.javaeye.com/blog/72526</a>&nbsp;
          发表时间: 2007年04月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">
<p><font face="Arial">为学日益 为道日损<br />
损之又损 以至于无为 无为而无不为</font></p>
<p><font face="Arial">把书读厚 再把书读薄 <br />
越来越薄 最后书里的东西全部忘记了 记住的只有&ldquo;道&rdquo; 这样的你就能够无所不为<br />
</font></p>
<p>&nbsp;</p>
</font><font face="Arial"></font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/72526#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 19 Apr 2007 17:01:55 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/72526</link>
        <guid>http://viwo.javaeye.com/blog/72526</guid>
      </item>
      <item>
        <title>Ajax的思考</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/69324" style="color:red;">http://viwo.javaeye.com/blog/69324</a>&nbsp;
          发表时间: 2007年04月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">Ajax被各种媒体宣传的太过火暴，抛开众多的宣传泡沫，我们来认真的思考一下，Ajax到底是什么？它能用来干什么？它应该用来干什么？<br />
Ajax是Asynchronous JavaScript and XML的缩写，其中有三个关键词：<br />
1 Asynchronous <br />
2 JavaScript <br />
3 XML<br />
这三个关键词可以这么理解：<br />
1 交互是异步的<br />
2 在客户端用JavaScript接收、发送、展示数据<br />
3 用XML作为传输介质<br />
(注：严谨的说1，2，3都不一定，这里只考虑一般的状况)<br />
那么这种性质的Ajax能用来做些什么呢？</font></p>
<p><font face="Arial">可以用这么一段话来描述一下它的作用：<br />
页面中的某个事件（点击、选择等）被JavaScript代码捕捉到，JavaScript对事件涉及到的数据进行封装，封装完成后以XML形式发送到服务器端，服务器端根据所给数据执行相应的查询处理封装出一份结果返回给客户端，客户端JavaScript接收到返回结果后解析并展现在客户端。</font></p>
<p><font face="Arial">如果你理解了这段话，那么你应该会发现这和我们传统的&ldquo;页面提交模型&rdquo;很像。</font></p>
<p><font face="Arial">差别其实就是这个Asynchronous，也就是说客户端数据封装后的发送是异步执行的，通俗一点讲就是：客户端向服务器端发送请求数据后，客户端这边该干什么还干什么，你看不出什么变化。当结果从服务器端返回后，客户端JavaScript得到结果，神不知鬼不觉的把结果放在页面的某个地方。</font></p>
<p><font face="Arial">这样你说Ajax能用来干什么？可以说传统的&ldquo;页面提交模型&rdquo;能干的事情它都能干。<br />
但是它能干未必就意味着我们就要这么干。试想，用户注册页面用Ajax实现会是怎么个场景？</font></p>
<p><font face="Arial">最后，它应该用来干什么？<br />
1 二级或N级联动列表<br />
如果下一级列表数据依赖于上一级选择，并且数据是动态不定的，那么这种情况用Ajax实现就会很自然。<br />
2 用户界面输入辅助<br />
你在Google中输入一个或几个字，就会出现一个下拉列表供你选择比较热门的相关词语。<br />
3 数据校验<br />
当焦点离开某控件时判断控件中数据是否合法。</font></p>
<p><font face="Arial">以上三种情况是我认为比较适合使用Ajax的代表。当然Ajax还有更多的应用，不过从上面我们&ldquo;可见一斑&rdquo;。</font></p>
<p><font face="Arial">基于上述各点，我认为Ajax能为Web程序添加很多光彩，但是想要颠覆甚至取代传统Web编程模型，那是不可能完成的任务。</font></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/69324#comments" style="color:red;">已有 <strong>34</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 09 Apr 2007 18:22:00 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/69324</link>
        <guid>http://viwo.javaeye.com/blog/69324</guid>
      </item>
      <item>
        <title>还是放弃了Ruby and Rails，选择了Groovy and Grails</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/68379" style="color:red;">http://viwo.javaeye.com/blog/68379</a>&nbsp;
          发表时间: 2007年04月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">还是放弃了Ruby and Rails，选择了Groovy and Grails。</font></p>
<p><font face="Arial">原因如下：<br />
<br />
1 习惯了Java的书写方式，用起Groovy来感觉很自然，虽然Ruby写起来也不费劲。<br />
</font><font face="Arial"><br />
2 Groovy代码和Java代码的互操作性确实很方便，这样目前的大量Java程序库可以很容易的在Groovy里使用。<br />
<br />
3 Grails工程能直接编译生成J2EE工程，这就意味着能在任何J2EE服务器上运行Grails工程。<br />
<br />
4 速度的问题也考虑过，不过既然Rails和Grails等是作为DSL出现的，那么速度应该不是关键问题，虽然现在比较慢，但是还没有慢到不</font><font face="Arial">可忍受的地步，况且我相信随着新版本的发布会有所改善。<br />
<br />
5 最快速最高效的实现业务需求才是关键，选择什么语言什么框架应该应情况而定，但对于一个Java程序员怎么看都是Groovy and Grails</font><font face="Arial">更加自然。<br />
<br />
6 我们不能因为JavaEye Ruby and Rails了就都开始跟着Ruby and Rails（没有任何贬低Ruby和Rails的意思，不得不承认Ruby和Rails在</font><font face="Arial">很多方面要比Groovy和Grails好的多）。</font></p>
<p><font face="Arial">个人观点仅供参考。<br />
</font></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/68379#comments" style="color:red;">已有 <strong>20</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 05 Apr 2007 19:53:00 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/68379</link>
        <guid>http://viwo.javaeye.com/blog/68379</guid>
      </item>
      <item>
        <title>通过一个实际的例子学习SQLServer存储过程</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/66580" style="color:red;">http://viwo.javaeye.com/blog/66580</a>&nbsp;
          发表时间: 2007年03月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">前面写过一篇 通过一个实际的例子学习Oracle存储过程，现在再来一篇 通过一个实际的例子学习SQLServer存储过程。<br />
所谓应用而学。
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-sql">
    <li class="alt"><span><span class="comment">--定义存储过程 </span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="keyword">CREATE</span><span>&nbsp;</span><span class="keyword">PROCEDURE</span><span>&nbsp;&nbsp;xxxxxxxx_p &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;( &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comment">--传递参数 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@ym&nbsp;&nbsp;&nbsp;</span><span class="keyword">char</span><span>(6) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;) &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">As</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comment">--定义变量，@xx表示局部变量，@@xx表示全局变量。定义多个变量用&quot;,&quot;号分割 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="keyword">declare</span><span>&nbsp;@ym_ln&nbsp;</span><span class="keyword">char</span><span>(6) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">declare</span><span>&nbsp;@cpcode&nbsp;</span><span class="keyword">char</span><span>(10), &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@cpname&nbsp;</span><span class="keyword">char</span><span>(50), &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;@swcode&nbsp;</span><span class="keyword">char</span><span>(10), &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@swname&nbsp;</span><span class="keyword">char</span><span>(50), &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;@czgscode&nbsp;</span><span class="keyword">char</span><span>(10), &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@czgscode_&nbsp;</span><span class="keyword">char</span><span>(10), &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;@czgsname&nbsp;</span><span class="keyword">char</span><span>(50), &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@qylx&nbsp;</span><span class="keyword">char</span><span>(2), &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;@qyxz&nbsp;</span><span class="keyword">char</span><span>(30) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="keyword">declare</span><span>&nbsp;@tdcode&nbsp;</span><span class="keyword">char</span><span>(10), &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;@sb_amt&nbsp;</span><span class="keyword">numeric</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@sb_ln_amt&nbsp;</span><span class="keyword">numeric</span><span>, &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;@sh_amt&nbsp;</span><span class="keyword">numeric</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@sh_ln_amt&nbsp;</span><span class="keyword">numeric</span><span>, &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;@ts_amt&nbsp;</span><span class="keyword">numeric</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@ts_ln_amt&nbsp;</span><span class="keyword">numeric</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">declare</span><span>&nbsp;@ybmy&nbsp;</span><span class="keyword">numeric</span><span>(12,6), &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@jljg&nbsp;</span><span class="keyword">numeric</span><span>(12,6), &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;@other&nbsp;</span><span class="keyword">numeric</span><span>(12,6), &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@ybmy_ln&nbsp;</span><span class="keyword">numeric</span><span>(12,6), &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;@jljg_ln&nbsp;</span><span class="keyword">numeric</span><span>(12,6), &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;@other_ln&nbsp;</span><span class="keyword">numeric</span><span>(12,6) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">declare</span><span>&nbsp;@rowcount&nbsp;</span><span class="keyword">int</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="comment">--删除表中现有符合ym=@ym的数据 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">delete</span><span>&nbsp;</span><span class="keyword">from</span><span>&nbsp;cs_xxxxxxxx&nbsp;</span><span class="keyword">where</span><span>&nbsp;ym=@ym &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">--给变量赋初值,用到了cast，substring函数。cast用于类型转换，substring用户截取字符串 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">set</span><span>&nbsp;@ym_ln=</span><span class="func">cast</span><span>((</span><span class="func">substring</span><span>(@ym,1,4)-1)&nbsp;</span><span class="keyword">as</span><span>&nbsp;</span><span class="keyword">char</span><span>(4))&nbsp;+</span><span class="func">substring</span><span>(@ym,5,2) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="comment">--声明一个游标 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">declare</span><span>&nbsp;cur_xxxx&nbsp;</span><span class="keyword">cursor</span><span>&nbsp;</span><span class="keyword">for</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;cpcode.code&nbsp;</span><span class="keyword">as</span><span>&nbsp;cpcode&nbsp;,cpcode.</span><span class="keyword">name</span><span>&nbsp;</span><span class="keyword">as</span><span>&nbsp;cpname&nbsp;,cpcode.swcode&nbsp;</span><span class="keyword">as</span><span>&nbsp;swcode,swcode.</span><span class="keyword">name</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">as</span><span>&nbsp;swname,cs_swcode_czgs.czgs&nbsp;</span><span class="keyword">as</span><span>&nbsp;czgscode,cpcode.qylx&nbsp;</span><span class="keyword">as</span><span>&nbsp;qylx&nbsp;</span><span class="keyword">from</span><span>&nbsp;cpcode&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="func">left</span><span>&nbsp;</span><span class="op">join</span><span>&nbsp;cs_swcode_czgs&nbsp;</span><span class="keyword">on</span><span>&nbsp;cpcode.swcode=cs_swcode_czgs.swcode&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="func">left</span><span>&nbsp;</span><span class="op">join</span><span>&nbsp;swcode&nbsp;</span><span class="keyword">on</span><span>&nbsp;cpcode.swcode=swcode.code&nbsp;</span><span class="keyword">where</span><span>&nbsp;cpcode.swcode&lt;&gt;</span><span class="string">''</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="comment">--打来游标 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">open</span><span>&nbsp;cur_xxxx &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="comment">--取游标中第一行记录并且写入变量。 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">fetch</span><span>&nbsp;</span><span class="keyword">next</span><span>&nbsp;</span><span class="keyword">from</span><span>&nbsp;cur_xxxx&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">into</span><span>&nbsp;&nbsp;@cpcode,@cpname,@swcode,@swname,@czgscode,@qylx &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="comment">--当@@fetch_status&nbsp;=&nbsp;0即取出了有效行时处理，用到了while语句，结构while&nbsp;xx&nbsp;begin&nbsp;xxx&nbsp;end </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;while&nbsp;@@fetch_status&nbsp;=&nbsp;0 &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">begin</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">--用select语句给变量赋值 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;@czgscode_=czgs&nbsp;</span><span class="keyword">from</span><span>&nbsp;cs_cpcode_czgs&nbsp;</span><span class="keyword">where</span><span>&nbsp;cpcode=@cpcode &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">--if语句，完整结构if&nbsp;xx&nbsp;begin&nbsp;xxx&nbsp;end </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;if&nbsp;@czgscode_&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="op">not</span><span>&nbsp;</span><span class="op">null</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">set</span><span>&nbsp;@czgscode=@czgscode_ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;@czgsname=</span><span class="keyword">name</span><span>&nbsp;</span><span class="keyword">from</span><span>&nbsp;cs_czgs&nbsp;</span><span class="keyword">where</span><span>&nbsp;code=@czgscode &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">--if&nbsp;else结构，完整结构&nbsp;if&nbsp;xx&nbsp;begin&nbsp;xxx&nbsp;else&nbsp;xxxx&nbsp;end </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;if&nbsp;@qylx='11' &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">set</span><span>&nbsp;@qyxz='内资企业' &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">set</span><span>&nbsp;@qyxz='外商投资企业' &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comment">--用select语句给变量赋值，用到了isnull函数。 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;@sb_amt=</span><span class="func">isnull</span><span>(</span><span class="func">sum</span><span>(mdtse),0)&nbsp;</span><span class="keyword">from</span><span>&nbsp;mdtsb&nbsp;</span><span class="keyword">where</span><span>&nbsp;sb_ym=@ym&nbsp;</span><span class="op">and</span><span>&nbsp;cpcode=@cpcode &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;@sb_ln_amt=</span><span class="func">isnull</span><span>(</span><span class="func">sum</span><span>(mdtse),0)&nbsp;</span><span class="keyword">from</span><span>&nbsp;mdtsb&nbsp;</span><span class="keyword">where</span><span>&nbsp;sb_ym=@ym_ln&nbsp;</span><span class="op">and</span><span>&nbsp;cpcode=@cpcode &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">-- </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comment">--省略n行类似赋值语句 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">-- </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comment">--goto语句,跳转到insertmodule </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">goto</span><span>&nbsp;insertmodule &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;</span><span class="comment">-- </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">--省略n行同类处理语句 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comment">-- </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>insertmodule: &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comment">--用is&nbsp;null表达式判断是否为null </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;if&nbsp;@sb_amt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="op">null</span><span>&nbsp;</span><span class="keyword">set</span><span>&nbsp;@sb_amt&nbsp;&nbsp;&nbsp;&nbsp;=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;if&nbsp;@sb_ln_amt&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="op">null</span><span>&nbsp;</span><span class="keyword">set</span><span>&nbsp;@sb_ln_amt&nbsp;&nbsp;&nbsp;=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;if&nbsp;@sh_amt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="op">null</span><span>&nbsp;</span><span class="keyword">set</span><span>&nbsp;@sh_amt&nbsp;&nbsp;&nbsp;&nbsp;=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;if&nbsp;@sh_ln_amt&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="op">null</span><span>&nbsp;</span><span class="keyword">set</span><span>&nbsp;@sh_ln_amt&nbsp;&nbsp;&nbsp;=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;if&nbsp;@ts_amt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="op">null</span><span>&nbsp;</span><span class="keyword">set</span><span>&nbsp;@ts_amt&nbsp;&nbsp;&nbsp;&nbsp;=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;if&nbsp;@ts_ln_amt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="op">null</span><span>&nbsp;</span><span class="keyword">set</span><span>&nbsp;@ts_ln_amt&nbsp;&nbsp;&nbsp;=0&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">--插入一般贸易 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;@ybmy=zb&nbsp;</span><span class="keyword">from</span><span>&nbsp;cs_scqybl&nbsp;</span><span class="keyword">where</span><span>&nbsp;tdcode='一般贸易'&nbsp;</span><span class="op">and</span><span>&nbsp;ym=@ym&nbsp;</span><span class="op">and</span><span>&nbsp;cpcode=@cpcode &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;@ybmy_ln=zb&nbsp;</span><span class="keyword">from</span><span>&nbsp;cs_scqybl&nbsp;</span><span class="keyword">where</span><span>&nbsp;tdcode='一般贸易'&nbsp;</span><span class="op">and</span><span>&nbsp;ym=@ym_ln&nbsp;</span><span class="op">and</span><span>&nbsp;cpcode=@cpcode &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;@ybmy&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="op">null</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">begin</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">--在存储过程中执行存储过程 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">exec</span><span>&nbsp;xxxbl&nbsp;@cpcode,@ym &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;@ybmy_ln&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="op">null</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">begin</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">exec</span><span>&nbsp;xxxxbl&nbsp;@cpcode,@ym_ln &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;@jljg=zb&nbsp;</span><span class="keyword">from</span><span>&nbsp;cs_scqybl&nbsp;</span><span class="keyword">where</span><span>&nbsp;tdcode='进料加工'&nbsp;</span><span class="op">and</span><span>&nbsp;ym=@ym&nbsp;</span><span class="op">and</span><span>&nbsp;cpcode=@cpcode &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;@jljg_ln=zb&nbsp;</span><span class="keyword">from</span><span>&nbsp;cs_scqybl&nbsp;</span><span class="keyword">where</span><span>&nbsp;tdcode='进料加工'&nbsp;</span><span class="op">and</span><span>&nbsp;ym=@ym_ln&nbsp;</span><span class="op">and</span><span>&nbsp;cpcode=@cpcode &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;@other=zb&nbsp;</span><span class="keyword">from</span><span>&nbsp;cs_scqybl&nbsp;</span><span class="keyword">where</span><span>&nbsp;tdcode='其他'&nbsp;</span><span class="op">and</span><span>&nbsp;ym=@ym&nbsp;</span><span class="op">and</span><span>&nbsp;cpcode=@cpcode &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;@other_ln=zb&nbsp;</span><span class="keyword">from</span><span>&nbsp;cs_scqybl&nbsp;</span><span class="keyword">where</span><span>&nbsp;tdcode='其他'&nbsp;</span><span class="op">and</span><span>&nbsp;ym=@ym_ln&nbsp;</span><span class="op">and</span><span>&nbsp;cpcode=@cpcode &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">--把上面各个步骤运算得到的值insert进表中cs_xxxxxxxx </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">insert</span><span>&nbsp;</span><span class="keyword">into</span><span>&nbsp;cs_xxxxxxxx&nbsp;(xx,xxx,xxxx)&nbsp;</span><span class="keyword">values</span><span>(vv,vvv,vvvv&nbsp;) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">--取取游标中下一行记录并写入变量 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">fetch</span><span>&nbsp;</span><span class="keyword">next</span><span>&nbsp;</span><span class="keyword">from</span><span>&nbsp;cur_xxxx&nbsp;</span><span class="keyword">into</span><span>&nbsp;&nbsp;@cpcode,@cpname,@swcode,@swname,@czgscode,@qylx &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="comment">--结束while循环 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="comment">--关闭游标 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">close</span><span>&nbsp;cur_xxxx &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="comment">--删除游标 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="keyword">deallocate</span><span>&nbsp;cur_xxxx &nbsp;&nbsp;</span></li>
    <li class="alt"><span>GO &nbsp;&nbsp;</span></li>
</ol>
</div>
</font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/66580#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 30 Mar 2007 09:50:04 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/66580</link>
        <guid>http://viwo.javaeye.com/blog/66580</guid>
      </item>
      <item>
        <title>TSS出现空指针异常，看你能不能分析出原因！</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/66486" style="color:red;">http://viwo.javaeye.com/blog/66486</a>&nbsp;
          发表时间: 2007年03月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">TSS&nbsp;<a href="http://www.theserverside.com/">http://www.theserverside.com/</a>&nbsp;竟然NullPointerException了！</font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/66486#comments" style="color:red;">已有 <strong>6</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 29 Mar 2007 21:05:23 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/66486</link>
        <guid>http://viwo.javaeye.com/blog/66486</guid>
      </item>
      <item>
        <title>SQLServer你都用哪些函数</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/66156" style="color:red;">http://viwo.javaeye.com/blog/66156</a>&nbsp;
          发表时间: 2007年03月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">下面是我在SQLServer中用的比较多的函数，你还用些什么函数？或者对哪个函数有比较好用法？或者你不用哪些函数？</font></p>
<p><font face="Arial">LEFT ( character_expression , integer_expression ) <br />
返回从字符串左边开始指定个数的字符。<br />
例:<br />
select left('my name is viwo',4)<br />
my n</font></p>
<p><font face="Arial">RIGHT ( character_expression , integer_expression ) <br />
返回字符串中从右边开始指定个数的 integer_expression 字符。<br />
例:<br />
select right('my name is viwo',4)<br />
viwo</font></p>
<p><font face="Arial">CAST ( expression AS data_type ) <br />
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。<br />
例:<br />
select cast(2 as varchar(10))+cast(11 as varchar(10))<br />
211</font></p>
<p><font face="Arial">CONVERT (data_type[(length)], expression [, style])<br />
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。<br />
例:<br />
select convert(varchar,getdate(),112)<br />
20070328</font></p>
<p><font face="Arial">DATEADD ( datepart , number, date ) <br />
在向指定日期加上一段时间的基础上，返回新的 datetime 值。<br />
例:<br />
select dateadd(month,2,getdate())<br />
2007-05-28 14:24:37.280</font></p>
<p><font face="Arial">COALESCE ( expression [ ,...n ] ) <br />
返回其参数中第一个非空表达式。<br />
例:<br />
select coalesce(null,null,0)<br />
0<br />
select coalesce(2,3,0)<br />
2</font></p>
<p><font face="Arial">CHARINDEX ( expression1 , expression2 [ , start_location ] ) <br />
返回字符串中指定表达式的起始位置。<br />
例:<br />
select charindex('ab','eabcd')<br />
2</font></p>
<p><font face="Arial">LTRIM ( character_expression )<br />
删除起始空格后返回字符表达式。<br />
例:<br />
select ltrim('&nbsp;&nbsp; abc&nbsp;&nbsp;&nbsp; ')<br />
abc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></p>
<p><font face="Arial">RTRIM ( character_expression ) <br />
截断所有尾随空格后返回一个字符串。<br />
例:<br />
select rtrim('&nbsp;&nbsp; abc&nbsp;&nbsp;&nbsp; ')<br />
&nbsp;&nbsp; abc</font></p>
<p><font face="Arial">ROUND ( numeric_expression , length [ , function ] ) <br />
返回数字表达式并四舍五入为指定的长度或精度。<br />
例:<br />
select ROUND(748.585, 2)<br />
748.590</font></p>
<p><font face="Arial">FLOOR ( numeric_expression )<br />
返回小于或等于所给数字表达式的最大整数。<br />
例:<br />
select floor(748.585)<br />
748</font></p>
<p><font face="Arial">CEILING ( numeric_expression )<br />
返回大于或等于所给数字表达式的最小整数。<br />
例:<br />
select ceiling(748.585)<br />
749</font></p>
<p><font face="Arial">REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' )<br />
用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。<br />
例:<br />
select replace('大连XXXX公司大连XXXX办事处','大连','北京') <br />
北京XXXX公司北京XXXX办事处</font></p>
<p><font face="Arial">count<br />
sum<br />
min<br />
max<br />
avg<br />
五个常用的集合函数不用多说<br />
</font></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/66156#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 28 Mar 2007 18:02:47 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/66156</link>
        <guid>http://viwo.javaeye.com/blog/66156</guid>
      </item>
      <item>
        <title>用Jakarta POI操作Excel文件</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/66049" style="color:red;">http://viwo.javaeye.com/blog/66049</a>&nbsp;
          发表时间: 2007年03月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">Jakarta POI 是一套用于访问微软格式文档的Java API。</font></p>
<p><font face="Arial">Jakarta POI有很多组件组成，其中有用于操作Excel格式文件的HSSF和用于早在Word的HWPF，在各种组件中目前只有用于操作Excel的HSSF相对成熟。它的官方首页是：http://jakarta.apache.org/poi/hssf/index.html，这里可以下载到它的最新版本和文档。</font></p>
<p><font face="Arial">下面就来看看如何通过Jakarta POI的HSSF操作Excel文件。</font></p>
<p><font face="Arial">操作Excel文件的步骤同JXL类似(关于如何用JXL操作Excel可以看我的另外两篇文章)。</font></p>
<p><font face="Arial">HSSF对Excel的操作主要是通过下面几个对象实现：<br />
HSSFWorkbook&nbsp;&nbsp;&nbsp; 工作簿对象对应于Excel文件<br />
HSSFSheet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheet对象对应于Excel中的Sheet<br />
HSSFRow&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 行对象表示Sheet中的一行(这个对象在JXL中并没有提供)<br />
HSSFCell&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 单元格对象</font></p>
<p><font face="Arial">操作步骤就是用HSSFWorkbook打开或者创建&ldquo;Excel文件对象&rdquo;，用HSSFWorkbook对象返回或者创建Sheet对象，用Sheet对象返回行对象，用行对象得到Cell对象，有了Cell对象就随你读写了。下面来看一个动态生成Excel文件的例子：</font></p>
<p><font face="Arial">//创建HSSFWorkbook对象<br />
HSSFWorkbook wb = new HSSFWorkbook();<br />
//创建HSSFSheet对象<br />
HSSFSheet sheet = wb.createSheet(&quot;sheet0&quot;);<br />
//创建HSSFRow对象<br />
HSSFRow row = sheet.createRow((short)0);<br />
//创建HSSFCell对象<br />
HSSFCell cell=row.createCell((short)0);<br />
//用来处理中文问题<br />
cell.setEncoding(HSSFCell.ENCODING_UTF_16);<br />
//设置单元格的值<br />
cell.setCellValue(&quot;单元格中的中文&quot;);<br />
//定义你需要的输出流<br />
OutputStream out = new FileOutputStream(&quot;viwo.xls&quot;);<br />
//输出Excel<br />
wb.write(out);<br />
out.flush();</font></p>
<p><font face="Arial">HSSF读取文件同样还是使用这几个对象，只是把相应的createXXX方法变成了getXXX方法即可。<br />
只要理解了其中原理，不管是读还是写亦或是特定格式都可以轻松实现，正所谓知其然更要知其所以然。</font></p>
<p><font face="Arial">最后附上HSSF官方的QuickGuide：《Busy Developers' Guide to HSSF Features》，虽然是英文的但还是很容易理解的。<br />
<a href="http://jakarta.apache.org/poi/hssf/quick-guide.html" target="_blank">http://jakarta.apache.org/poi/hssf/quick-guide.html</a></font></p>
<p><font face="Arial">到此Java操作Excel文章系列就结束了，下一篇会介绍如何使用JFreeChart生成各种图。</font></p>
<p><font face="Arial"></font>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/66049#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 28 Mar 2007 14:03:26 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/66049</link>
        <guid>http://viwo.javaeye.com/blog/66049</guid>
      </item>
      <item>
        <title>外化内不化</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/65643" style="color:red;">http://viwo.javaeye.com/blog/65643</a>&nbsp;
          发表时间: 2007年03月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">&nbsp;庄子有一个观点，说一个人要做到外化内不化。</font></p>
<p><font face="Arial">外化就是指你的行为层面上，要能够顺应社会的规则，</font></p>
<p><font face="Arial">要能够遵从这个社会给你的一种责任，要去接人待物，应对，这就叫外化。</font></p>
<p><font face="Arial">内不化，</font><font face="Arial">就是每一个人在生命的深处，有你自己的标准，</font></p>
<p><font face="Arial">有你自己的判断，有你自己的态度，这些东西要坚持。</font></p>
<p><font face="Arial">&nbsp;一个人内不化，所以有生命，外化，所以有生存，</font></p>
<p><font face="Arial">生命与生存叠加在一起，就是一个生活的体系。</font></p>
<p><font face="Arial">其实最怕的东西是外不化而内化</font><font face="Arial">，比如一个人在外面接人待物，</font></p>
<p><font face="Arial">各处格格生生的，总要坚持自我，而内心里面一会儿是这个，</font></p>
<p><font face="Arial">一会儿是那个，才会陷于大迷惑。</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----于单</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/65643#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 26 Mar 2007 22:18:00 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/65643</link>
        <guid>http://viwo.javaeye.com/blog/65643</guid>
      </item>
      <item>
        <title>Java操作Excel之理解JXL--读取Excel模板动态写入数据并生成Excel</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/64323" style="color:red;">http://viwo.javaeye.com/blog/64323</a>&nbsp;
          发表时间: 2007年03月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">
<p><font face="Arial">上一篇文章 Java操作Excel之理解JXL--读取Excel 说到如何用JXL读取Excel文件，<br />
现在来看看如何读取Excel模板然后把动态数据写入到模板以生成特定格式的Excel。<br />
同样的思路，先来考虑下会涉及到那些对象，和上篇文章读取相比这里涉及到一个写入的步骤，所以JXL必然会提供一个对象<br />
来支持写入，这就是WritableWorkbook。那么如何得到到这个类的实例，查看APIDoc发现Workbook类提供了几个<br />
静态的createWorkbook方法返回WritableWorkbook实例，可以看到众多createWorkbook方法主要分为两类：一个参数<br />
和两个参数。简单分析可以得知前者仅仅是用来直接生成Excel文件，后者先读取模板再向模板写入数据然后生成Excel。<br />
（还有一个三参数方法加上一个用来设置workbook的参数）<br />
现在按照上篇文章中所讲述的流程来看看读取模板并写入需要那些步骤。</font></p>
<p><font face="Arial">第一步：选择模板文件：<br />
Workbook wb = Workbook.getWorkbook(new File(realpath));</font></p>
<p><font face="Arial">第二步：通过模板得到一个可写的Workbook：<br />
WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb);<br />
第一个参数是一个输出流对象，比如可以<br />
ByteArrayOutputStream targetFile = new ByteArrayOutputStream();<br />
这样定义这个输出流对象。第二个参数代表了要读取的模板。</font></p>
<font face="Arial">
<p><br />
第三步：选择模板中名称为StateResult的Sheet：<br />
WritableSheet wws = wwb.getSheet(&quot;StateResult&quot;);<br />
如果需要也可以创建Sheet<br />
WritableSheet wws = wwb.createSheet(&quot;Sheet名称&quot;,i);</p>
<p><br />
第四步：选择单元格，写入动态值，根据单元格的不同类型转换成相应类型的单元格：<br />
Label A1 = (Label)wws.getWritableCell(0,0);<br />
A1.setString(&quot;单元格内容&quot;)<br />
或<br />
Number A2 = (Number)wws.getWritableCell(0,1);//Number是jxl.write.Number<br />
A2.setValue(3.3);<br />
也可以创建新的单元格并且加入到Sheet中<br />
Label C1 = new Label(2,0,&quot;单元格内容&quot;);<br />
wws.addCell(C1);<br />
或<br />
Number C1 = new Number(2,0,3.3);<br />
wws.addCell(C1);</p>
<p>在生成Excel报表的时候还会遇到一种需求就是数据的格式问题，我们可能希望数值型单元格以某种格式显示，而字符串型单元格以另</p>
<p>一种格式显示。这些可以通过WritableFont、NumberFormat、WritableCellFormat等实现,下例给单元格A1、A2添加了不同的格式。</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>WritableFont&nbsp;font=&nbsp;</span><span class="keyword">new</span><span>&nbsp;WritableFont(WritableFont.createFont(</span><span class="string">&quot;宋体&quot;</span><span>),</span><span class="number">10</span><span>,WritableFont.NO_BOLD); &nbsp;&nbsp;</span></span></li>
    <li class=""><span>NumberFormat&nbsp;format&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;NumberFormat(</span><span class="string">&quot;###,##0.00&quot;</span><span>);&nbsp;</span><span class="comment">//NumberFormat是jxl.write.NumberFormat </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>WritableCellFormat&nbsp;cellFormat1&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;WritableCellFormat(font,format); &nbsp;&nbsp;</span></li>
    <li class=""><span>WritableCellFormat&nbsp;cellFormat2&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;WritableCellFormat(font); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>cellFormat1.setBorder(Border.ALL,&nbsp;jxl.format.BorderLineStyle.THIN);&nbsp;</span><span class="comment">//Border是jxl.format.Border </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>cellFormat2.setBorder(Border.ALL,&nbsp;jxl.format.BorderLineStyle.THIN);&nbsp;</span><span class="comment">//Border是jxl.format.Border </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>A2.setCellFormat(cellFormat1); &nbsp;&nbsp;</span></li>
    <li class=""><span>A1.setCellFormat(cellFormat2);&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>还有不要忘记关闭WritableWorkbook和Workbook以释放资源：<br />
wwb.close();<br />
wb.close();</p>
<p>最后就可以你需要的方式从输出流targetFile中取得Excel，比如直接生成文件存本地，输出到客户端浏览器等。</p>
<p>如果还有其他需求，按照这种思路，再参照APIDoc相信可以很容易的解决。</p>
<p>至此，Java操作Excel之理解JXL就写完了。下一篇会介绍如何用Jakarta POI操作Excel。</p>
<p>&nbsp;</p>
</font></font><font face="Arial"></font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/64323#comments" style="color:red;">已有 <strong>9</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 21 Mar 2007 12:55:32 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/64323</link>
        <guid>http://viwo.javaeye.com/blog/64323</guid>
      </item>
      <item>
        <title>Java操作Excel之理解JXL--读取Excel</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/63001" style="color:red;">http://viwo.javaeye.com/blog/63001</a>&nbsp;
          发表时间: 2007年03月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial"><font face="Arial">
<p><font face="Arial">JXL(Java Excel API)是一个用来动态读写Excel文件的开源框架，利用它可以在任何支持Java的操作系统上动态读写Excel文件。JXL的主页是：http://www.andykhan.com/jexcelapi/，可以在这里下载到它的最新的版本。<br />
你可以分别通过如下命令<br />
java -jar jxl.jar -xml test.xls<br />
java -jar jxl.jar -cvs test.xls <br />
以xml和cvs格式查看test.xls，这是因为JXL作者实现了一个用来演示的jxl.demo.Demo的类。</font></p>
<p><font face="Arial">当然我们使用JXL主要是用它来动态读写Excel文件。现在就来看看JXL在对Excel的读和写上都提供了那些支持。<br />
先来看看Excel文件中都有写上面对象<br />
1 文件对象 2工作簿对象 3 单元格对象。<br />
相应的在JXL中就有Workbook，Sheet ，Cell 。通过这三个对象我们就可以实现Excel文件的读取工作。<br />
我们先想想一下读取步骤，不管是什么样的Excel操作框架必定都要经历<br />
1选取Excel文件，2选择工作簿，3选择Cell，4读取信息。<br />
那么现在就可以看看JXL中这四步骤如何体现：<br />
//通过Workbook的静态方法getWorkbook选取Excel文件<br />
Workbook workbook = Workbook.getWorkbook(new File(&quot;myfile.xls&quot;)); </font></p>
<p><font face="Arial">//通过Workbook的getSheet方法选择第一个工作簿（从0开始）<br />
Sheet sheet = workbook.getSheet(0); </font></p>
<p><font face="Arial">//通过Sheet方法的getCell方法选择位置为C2的单元格（两个参数都从0开始）<br />
Cell c2 = sheet.getCell(2,1); </font></p>
<p><font face="Arial">//通过Cell的getContents方法把单元格中的信息以字符的形式读取出来<br />
String stringc2 = c2.getContents();</font></p>
<p><font face="Arial">可以看到正是刚才所说的四个步骤。</font></p>
<p><font face="Arial">我们都知道Excel单元格是有格式的，那么这些信息如何取得。<br />
Cell提供了一个getType方法能够返回单元格的类型信息，同时JXL提供了一个CellType类用来预设Excel中的类型信息，而且JXL提供了一些Cell类的子类用来分别用来表示各种类型的单元格，如LabelCell，NumberCell，DateCell分别表示字符、数值、日期类型的单元格。所以我们可以这样写：<br />
if (c2.getType() == CellType.NUMBER) <br />
{ <br />
&nbsp; NumberCell nc = (NumberCell) c2; <br />
&nbsp; numberb2 = nc.getValue(); <br />
}</font></p>
<p><font face="Arial">最后不要忘记关闭workbook以释放资源：<br />
workbook.close(); <br />
现在总结一下:三个对象，四个步骤，注意格式。就可以轻松的从Excel文件中读取数据。</font></p>
</font></font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/63001#comments" style="color:red;">已有 <strong>7</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 20 Mar 2007 15:20:38 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/63001</link>
        <guid>http://viwo.javaeye.com/blog/63001</guid>
      </item>
      <item>
        <title>君子坦荡荡，小人长戚戚</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/60885" style="color:red;">http://viwo.javaeye.com/blog/60885</a>&nbsp;
          发表时间: 2007年03月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">【原文】</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Arial">子曰：君子坦荡荡，小人长戚戚。</font></p>
<p><font face="Arial">【译文】</font></p>
<p><font face="Arial">　　孔子说：君子心胸宽广坦荡，小人经常心绪不宁。</font></p>
<p><font face="Arial">【读解】</font></p>
<p><font face="Arial">　　怀着一颗宽容、安宁、从容的心去看待这个世界去看待自己。</font><font face="Arial"><br />
<br />
&nbsp;</font></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/60885#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 19 Mar 2007 12:49:47 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/60885</link>
        <guid>http://viwo.javaeye.com/blog/60885</guid>
      </item>
      <item>
        <title>原来网络小说也这么有意思</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/60394" style="color:red;">http://viwo.javaeye.com/blog/60394</a>&nbsp;
          发表时间: 2007年03月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>上学上到大学毕业，书虽然读了很多但是竟然连一本武侠小说都没有看过，更不用说什么网络小说，因为我以前从来都排斥那些，认为看那些书的人都是一些无聊的人，只是狂看技术书籍，小说就是高中时看的四大名著加几部外国名著。</p>
<p>上周末，无意中打开了一个同事发给我的我确一直不屑一看的一篇网络小说：赵赶驴电梯奇遇记，无意中看了几眼，也就一直看了下去，只一天就看完了。</p>
<p>没什么，就是有意思，至少比电影大片有意思多了。后来上网一查才知道这是这是2006年相当火的一部网络小说，我竟然从来都没听说过，哈哈，唉。。。</p>
<p>这么看来王朔、韩寒等受到人们的关注是还是有道理的。看来阅读给人带来的快乐一点也不会比电影电视少。</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/60394#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 Mar 2007 18:43:37 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/60394</link>
        <guid>http://viwo.javaeye.com/blog/60394</guid>
      </item>
      <item>
        <title>身体是革命的本钱</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/60069" style="color:red;">http://viwo.javaeye.com/blog/60069</a>&nbsp;
          发表时间: 2007年03月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">想和大家分享一下(我听说的)发生在我身边的一件事情。<br />
某男、75年生人，于2006年下半年经常性肚子疼，并带病上班。到了年底，实在无法克制疼痛，到医院看病，医生确诊是胆囊炎，在今年2月初出住院，于春节前出院。可是就在初八那天他主动去医院复查，竟昏倒在门诊处， 医生会诊初步确定为急性胰腺炎，初十晚上做的手术，医生说有生命危险， 可能出不了手术时。经过几个小时的抢救， 人是活了过来， 但是情况非常糟糕。肾衰竭、需要靠呼吸机维持。后来医院说是急性胰腺炎并发症。最终他在昨天晚11左右病逝。他留给家里的是刚出生三个月的婴儿（12月份出生）和没有工作的妻子。<br />
据他部门的同事讲，他每天早晨都吃方便面和香肠， 生活非常不规律。而且在病发的前一天晚上熬夜打麻将。（据了解， 该病与暴饮暴食有关系。）<br />
其实，想一想人的生命竟是如此的脆弱、生活又是如此残酷。<br />
借此，建议大家一定要有规律的生活习惯，另外，如果不舒服一定要到医院</font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://viwo.javaeye.com/blog/60069#comments" style="color:red;">已有 <strong>11</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 Mar 2007 16:00:30 +0800</pubDate>
        <link>http://viwo.javaeye.com/blog/60069</link>
        <guid>http://viwo.javaeye.com/blog/60069</guid>
      </item>
      <item>
        <title>对于一个业务使用游标和使用临时表的两种实现</title>
        <author>viwo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://viwo.javaeye.com">viwo</a>&nbsp;
          链接：<a href="http://viwo.javaeye.com/blog/59864" style="color:red;">http://viwo.javaeye.com/blog/59864</a>&nbsp;
          发表时间: 2007年03月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="code_title">无疑在大数据量的情况下<font face="Arial">使用临时表</font>版本的效率会远远高于使用游标版本。</div>
<div class="code_title">使用游标版本：</div>
<div class="code_title">
<div class="code_title">sql 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-sql">
    <li class="alt"><span><span>&nbsp;</span><span class="keyword">cursor</span><span>&nbsp;cur_swcode&nbsp;</span><span class="keyword">is</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;code&nbsp;</span><span class="keyword">as</span><span>&nbsp;swcode,&nbsp;</span><span class="keyword">name</span><span>&nbsp;</span><span class="keyword">as</span><span>&nbsp;swname&nbsp;</span><span class="keyword">from</span><span>&nbsp;swcode&nbsp;</span><span class="keyword">where</span><span>&nbsp;flag&nbsp;=&nbsp;3; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">begin</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">for</span><span>&nbsp;rec_swcode&nbsp;</span><span class="op">in</span><span>&nbsp;cur_swcode&nbsp;loop &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">--DBMS_OUTPUT.put_line(rec_swcode.swcode||rec_swcode.swname); </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">--本期累计批准的核实调查条数 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;</span><span class="func">count</span><span>(*) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">into</span><span>&nbsp;vn_bqljpzdchsts &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">from</span><span>&nbsp;sh_unpass_sub &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">left</span><span>&nbsp;</span><span class="op">outer</span><span>&nbsp;</span><span class="op">join</span><span>&nbsp;sh_unpass&nbsp;</span><span class="keyword">on</span><span>&nbsp;sh_unpass.MS_ID&nbsp;=&nbsp;sh_unpass_sub.MS_ID &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">left</span><span>&nbsp;</span><span class="op">outer</span><span>&nbsp;</span><span class="op">join</span><span>&nbsp;cpcode&nbsp;</span><span class="keyword">on</span><span>&nbsp;cpcode.CODE&nbsp;=&nbsp;sh_unpass.CPCODE &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">where</span><span>&nbsp;pz_date&nbsp;&gt;=&nbsp;to_date(vs_start_day,&nbsp;'yyyymmdd') &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="op">and</span><span>&nbsp;pz_date&nbsp;&lt;=&nbsp;to_date(vs_end_day,&nbsp;'yyyymmdd') &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="op">and</span><span>&nbsp;pz_flag&nbsp;=&nbsp;'R' &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="op">and</span><span>&nbsp;cpcode.swcode&nbsp;=&nbsp;rec_swcode.swcode; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">--上期批准上期未办结的调查核实条数 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;</span><span class="func">count</span><span>(*) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">into</span><span>&nbsp;vn_sqpzsqwbjdchsts &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">from</span><span>&nbsp;sh_unpass_sub &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">left</span><span>&nbsp;</span><span class="op">outer</span><span>&nbsp;</span><span class="op">join</span><span>&nbsp;sh_unpass&nbsp;</span><span class="keyword">on</span><span>&nbsp;sh_unpass.MS_ID&nbsp;=&nbsp;sh_unpass_sub.MS_ID &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">left</span><span>&nbsp;</span><span class="op">outer</span><span>&nbsp;</span><span class="op">join</span><span>&nbsp;cpcode&nbsp;</span><span class="keyword">on</span><span>&nbsp;cpcode.CODE&nbsp;=&nbsp;sh_unpass.CPCODE &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">where</span><span>&nbsp;pz_date&nbsp;&gt;=&nbsp;to_date(vs_ln_start_day,&nbsp;'yyyymmdd') &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span cla