﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-什么都没有的路边摊-随笔分类-技术堆累</title><link>http://www.blogjava.net/yiyan2002/category/21667.html</link><description>无证小贩</description><language>zh-cn</language><lastBuildDate>Tue, 17 Apr 2007 14:27:58 GMT</lastBuildDate><pubDate>Tue, 17 Apr 2007 14:27:58 GMT</pubDate><ttl>60</ttl><item><title>数据库连接池心得</title><link>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111118.html</link><dc:creator>shadeclipse</dc:creator><author>shadeclipse</author><pubDate>Mon, 16 Apr 2007 15:59:00 GMT</pubDate><guid>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111118.html</guid><wfw:comment>http://www.blogjava.net/yiyan2002/comments/111118.html</wfw:comment><comments>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111118.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yiyan2002/comments/commentRss/111118.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yiyan2002/services/trackbacks/111118.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&nbsp;JDK 1.5 <br></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">　　</span><span lang=EN-US style="FONT-FAMILY: Verdana">Tomcat 5.0.30 <br></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">　　</span><span lang=EN-US style="FONT-FAMILY: Verdana">SQLServer2000<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">---------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">%TOMCAT_HOME%\conf\Server.xml</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">结构分析</span><span lang=EN-US style="FONT-FAMILY: Verdana"><o:p></o:p></span></p>
<div align=center>
<table style="MARGIN-LEFT: 0.75pt; WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: #ebe9ed; PADDING-RIGHT: 1.5pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: #ebe9ed; PADDING-TOP: 1.5pt; BORDER-BOTTOM: #ebe9ed">
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;Server&gt;<o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;Service&gt;<o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;Connector&gt;&lt;/Connector&gt;<o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;Engine&gt;<o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;Host&gt;<o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;Context&gt;&lt;/Context&gt;<o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 52.5pt; mso-char-indent-count: 5.0; mso-char-indent-size: 10.5pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;/Host&gt;<o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; mso-char-indent-count: 3.0; mso-char-indent-size: 10.5pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;/Engine&gt;<o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;/Service&gt;<o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;/Server&gt;<o:p></o:p></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></span></p>
<div style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 1pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.75pt solid">
<p class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; mso-padding-alt: 0cm 0cm 1.0pt 0cm; mso-border-bottom-alt: solid windowtext .75pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;Server&gt;&lt;!--</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">顶层元素</span><span lang=EN-US style="FONT-FAMILY: Verdana">,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">是</span><span lang=EN-US style="FONT-FAMILY: Verdana">Tomcat</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">实例的顶层元素，可包含一个或多个</span><span lang=EN-US style="FONT-FAMILY: Verdana">Service--&gt;<br>&lt;Service&gt;&lt;!--</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">连接器元素，包含一个</span><span lang=EN-US style="FONT-FAMILY: Verdana">Engine</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">元素，以及一个或多个</span><span lang=EN-US style="FONT-FAMILY: Verdana">Connector</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">元素，这些</span><span lang=EN-US style="FONT-FAMILY: Verdana"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Connector</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">共享同一个</span><span lang=EN-US style="FONT-FAMILY: Verdana">Engine--&gt;<br>&lt; Connector&gt;&lt; !--</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">实际和客户交互的组件</span><span lang=EN-US style="FONT-FAMILY: Verdana">--&gt;<br>&lt; Engine&gt;&lt; !--</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">容器类元素，可以包含多个</span><span lang=EN-US style="FONT-FAMILY: Verdana">Host</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">元素</span><span lang=EN-US style="FONT-FAMILY: Verdana">--&gt;<br>&lt; Host&gt;&lt; !--</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">定义一个虚拟主机，它可以包含一个或多个</span><span lang=EN-US style="FONT-FAMILY: Verdana">Web</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用</span><span lang=EN-US style="FONT-FAMILY: Verdana">--&gt;<br>&lt; Context&gt;&lt; !--</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">使用最频繁的元素，每个</span><span lang=EN-US style="FONT-FAMILY: Verdana">Context</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">代表运行在虚拟主机上的应用</span><span lang=EN-US style="FONT-FAMILY: Verdana">--&gt;<br></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">嵌套类元素可以加到容器组件中如：</span><span lang=EN-US style="FONT-FAMILY: Verdana">&lt; Logger&gt;&lt; Value&gt;&lt; Realm&gt;</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">元素</span><span lang=EN-US style="FONT-FAMILY: Verdana"><o:p></o:p></span></p>
</div>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">Context</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">元素功能分析</span><span lang=EN-US style="FONT-FAMILY: Verdana"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">在</span><span lang=EN-US style="FONT-FAMILY: Verdana"> [installdir]\webapps </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">目录下创建一个名为</span><span lang=EN-US style="FONT-FAMILY: Verdana"> blog </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的子目录。然后在</span><span lang=EN-US style="FONT-FAMILY: Verdana"> blog </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">子目录下，创建标准的</span><span lang=EN-US style="FONT-FAMILY: Verdana"> Web </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用程序目录结构：</span><span lang=EN-US style="FONT-FAMILY: Verdana"> <o:p></o:p></span></p>
<div align=center>
<table style="WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: #ebe9ed; PADDING-RIGHT: 1.5pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: #ebe9ed; PADDING-TOP: 1.5pt; BORDER-BOTTOM: #ebe9ed">
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">[installdir]\webapps\blog<o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">[installdir]\webapps\blog\WEB-INF <o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">[installdir]\webapps\blog\WEB-INF\classes <o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">[installdir]\webapps\blog\WEB-INF\lib<o:p></o:p></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">接下来，添加指向</span><span lang=EN-US style="FONT-FAMILY: Verdana"> Web </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用程序的</span><span lang=EN-US style="FONT-FAMILY: Verdana"> context</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。</span><span lang=EN-US style="FONT-FAMILY: Verdana">context </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">只是一个别名，它告诉</span><span lang=EN-US style="FONT-FAMILY: Verdana"> Tomcat </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">在哪里可以访问</span><span lang=EN-US style="FONT-FAMILY: Verdana"> Web </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用程序。我们的</span><span lang=EN-US style="FONT-FAMILY: Verdana"> context </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">路径将是</span><span lang=EN-US style="FONT-FAMILY: Verdana"> /blog</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，它将指向我们刚刚创建的</span><span lang=EN-US style="FONT-FAMILY: Verdana"> blog </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">子目录。在用户输入</span><span lang=EN-US style="FONT-FAMILY: Verdana"> http://localhost:8080/blog </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">后，将转至</span><span lang=EN-US style="FONT-FAMILY: Verdana"> webapps </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">下的顶级</span><span lang=EN-US style="FONT-FAMILY: Verdana"> banner </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">目录。如果他想运行我们的</span><span lang=EN-US style="FONT-FAMILY: Verdana"> BlogServlet</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">（将存在于</span><span lang=EN-US style="FONT-FAMILY: Verdana"> WEB-INF/classes </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">目录中），他可以使用</span><span lang=EN-US style="FONT-FAMILY: Verdana"> http://localhost:8080/blog/servlet/BlogServlet</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。</span><span lang=EN-US style="FONT-FAMILY: Verdana"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">要添加</span><span lang=EN-US style="FONT-FAMILY: Verdana"> /blog context</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，首先，我们需要编辑</span><span lang=EN-US style="FONT-FAMILY: Verdana"> Tomcat conf </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">目录中的</span><span lang=EN-US style="FONT-FAMILY: Verdana"> server.xml </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">文件。在接近该文件底部的位置，您会看到几个</span><span lang=EN-US style="FONT-FAMILY: Verdana"> context </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">标记。那里应该有一个用于</span><span lang=EN-US style="FONT-FAMILY: Verdana"> /admin </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</span><span style="FONT-FAMILY: Verdana"> <span lang=EN-US>context </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和一个用于</span><span lang=EN-US style="FONT-FAMILY: Verdana"> /examples </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</span><span lang=EN-US style="FONT-FAMILY: Verdana"> context</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。请添加以下</span><span lang=EN-US style="FONT-FAMILY: Verdana"> context </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">标记：</span><span lang=EN-US style="FONT-FAMILY: Verdana"> <o:p></o:p></span></p>
<div align=center>
<table style="WIDTH: 300pt; mso-cellspacing: 0cm; mso-padding-alt: 1.5pt 1.5pt 1.5pt 1.5pt" cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: #ebe9ed; PADDING-RIGHT: 1.5pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 1.5pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: #ebe9ed; PADDING-TOP: 1.5pt; BORDER-BOTTOM: #ebe9ed">
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;!-- BannerAd Context --&gt; <o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;Context path="/blog" docBase="blog" <o:p></o:p></span></p>
            <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">debug="0" reloadable="true" crossContext="true"/&gt;<o:p></o:p></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">--------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">开始数据池配置</span><span lang=EN-US style="FONT-FAMILY: Verdana"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">．配置环境</span><span lang=EN-US style="FONT-FAMILY: Verdana"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">将需要的</span><span lang=EN-US style="FONT-FAMILY: Verdana">jar</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">包打入全局目录，即</span><span lang=EN-US style="FONT-FAMILY: Verdana">%TOMCAT_HOME%\common\lib</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">下，如</span><span lang=EN-US style="FONT-FAMILY: Verdana">SQLServer</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的数据驱动等。</span><span lang=EN-US style="FONT-FAMILY: Verdana"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">．配置</span><span lang=EN-US style="FONT-FAMILY: Verdana">TOMCAT</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">（使用</span><span lang=EN-US style="FONT-FAMILY: Verdana">POOLMAN</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的数据池）</span><span lang=EN-US style="FONT-FAMILY: Verdana"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">&#183;服务器端：配置</span><span lang=EN-US style="FONT-FAMILY: Verdana">Server.xml</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">文档</span><span lang=EN-US style="FONT-FAMILY: Verdana">(%TOMCAT_HOME%\conf\Server.xml)<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;Context path="/blog" docBase="blog" debug="0" reloadable="true"&gt;<br>&lt;Resource name="jdbc/blog" auth="Container" type="javax.sql.DataSource"/&gt;<br>&lt;ResourceParams name="jdbc/blog"&gt;<br>&lt;parameter&gt;<br>&lt;name&gt;driverClassName&lt;/name&gt;<br>&lt;value&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/value&gt;<br>&lt;/parameter&gt;<br>&lt;parameter&gt;<br>&lt;name&gt;url&lt;/name&gt; &lt;value&gt;jdbc:microsoft:sqlserver://localhost:1433;databaseName=blog&lt;/value&gt;<br>&lt;/parameter&gt;<br>&lt;parameter&gt;<br>&lt;name&gt;username&lt;/name&gt;<br>&lt;value&gt;sa&lt;/value&gt;<br>&lt;/parameter&gt;<br>&lt;parameter&gt;<br>&lt;name&gt;password&lt;/name&gt;<br>&lt;value&gt;sa&lt;/value&gt;<br>&lt;/parameter&gt;<br>&lt;parameter&gt;<br>&lt;name&gt;maxActive&lt;/name&gt;<br>&lt;value&gt;20&lt;/value&gt;<br>&lt;/parameter&gt;<br>&lt;parameter&gt;<br>&lt;name&gt;maxIdle&lt;/name&gt;<br>&lt;value&gt;20&lt;/value&gt;<br>&lt;/parameter&gt;<br>&lt;parameter&gt;<br>&lt;name&gt;maxWait&lt;/name&gt;<br>&lt;value&gt;-1&lt;/value&gt;<br>&lt;/parameter&gt;<br>&lt;/ResourceParams&gt;<br>&lt;/Context&gt;<br></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">&#183;</span><span lang=EN-US style="FONT-FAMILY: Verdana">.</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">客户端：配置</span><span lang=EN-US style="FONT-FAMILY: Verdana">web.xml</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">文档</span><span lang=EN-US style="FONT-FAMILY: Verdana">(\webapps\banner\WEB-INF\web.xml)<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-FAMILY: Verdana">&lt;resource-ref&gt;<br>&lt;description&gt;SqlServer Datasource example&lt;/description&gt;<br>&lt;res-ref-name&gt;jdbc/blog&lt;/res-ref-name&gt;<br>&lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br>&lt;res-auth&gt;Container&lt;/res-auth&gt;</span><span lang=EN-US><br>&lt;/resource-ref&gt;</span><span lang=EN-US style="FONT-FAMILY: Verdana"><o:p></o:p></span></p>
<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">&#183;测试：</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: Verdana; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><br>&lt;!doctype html public "-//w3c//dtd html 4.0 transitional//en" <br>"http://www.w3.org/TR/REC-html40/strict.dtd"&gt; <br>&lt;%@ page import="java.sql.*"%&gt; <br>&lt;%@ page import="javax.sql.*"%&gt; <br>&lt;%@ page import="javax.naming.*"%&gt; <br>&lt;%@ page session="false" %&gt; <br>&lt;html&gt; <br>&lt;head&gt; <br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; <br>&lt;title&gt;Test of MySQL connection pool&lt;/title&gt; <br>&lt;/head&gt; <br>&lt;body&gt; <br>&lt;% <br>out.print("Start&lt;br/&gt;"); <br>try{ <br>Context initCtx = new InitialContext(); <br>Context ctx = (Context) initCtx.lookup("java:comp/env"); <br>Object obj = (Object) ctx.lookup("jdbc/blog "); <br>javax.sql.DataSource ds = (javax.sql.DataSource)obj; <br>Connection conn = ds.getConnection(); <br>out.print("connection pool runs perfectly!"); <br>conn.close(); <br>} <br>catch(Exception ex){ <br>out.print(ex.getMessage()); <br>ex.printStackTrace(); <br>} <br>%&gt; <br>&lt;/body&gt; <br>&lt;/html&gt;<br>-------------------------------------------------------------<br>5.0与5.5的区别<br><span class=postbody style="FONT-SIZE: 18pt; FONT-FAMILY: Georgia"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Tomcat5.5.X</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">中，<span class=postbody><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">dbcp</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">组件需要自己额外下载的，不像在</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Tomcat5.0.X</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">中已经附带了，配置格式不一样，如下</span></span><br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #666666; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">&lt;Resource name="jdbc/ExampleDB" auth="Container" <br>&nbsp; &nbsp;&nbsp; &nbsp;type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" <br>&nbsp; &nbsp;&nbsp; &nbsp;url="jdbc:mysql://localhost/quickoa" username="root" <br>&nbsp; &nbsp;&nbsp; &nbsp;password="" maxActive="100" maxIdle="30" maxWait="10000" /&gt;<br><br></span></span></span></span>
<img src ="http://www.blogjava.net/yiyan2002/aggbug/111118.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yiyan2002/" target="_blank">shadeclipse</a> 2007-04-16 23:59 <a href="http://www.blogjava.net/yiyan2002/archive/2007/04/16/111118.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库分页代码收集</title><link>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111114.html</link><dc:creator>shadeclipse</dc:creator><author>shadeclipse</author><pubDate>Mon, 16 Apr 2007 15:46:00 GMT</pubDate><guid>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111114.html</guid><wfw:comment>http://www.blogjava.net/yiyan2002/comments/111114.html</wfw:comment><comments>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111114.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yiyan2002/comments/commentRss/111114.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yiyan2002/services/trackbacks/111114.html</trackback:ping><description><![CDATA[<p>分页(Paging) / SQL Server / Oracle <br>虽然 DataGrid 控件自己带了一个分页处理机制，但它是将符合查询条件的所有记录读入内存，然后进行分页显示的。随着符合条件的记录数目增多，就会出现运行效率问题，或者至少是资源的利用率下降。</p>
<p>下面的代码示例都以下面的表结构为准：</p>
<p>　 　 Articles 表&nbsp;&nbsp;&nbsp;&nbsp; SQL Server 类型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle 类型 <br>PK&nbsp;&nbsp;&nbsp; Id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int (自增)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number(9) (插入时在当前最大值上加1) <br>　&nbsp;&nbsp;&nbsp; Author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nvarchar(10)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nvarchar2(10) <br>　&nbsp;&nbsp;&nbsp; Title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nvarchar(50)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nvarchar2(50) <br>　&nbsp;&nbsp;&nbsp; PubTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; datetime date </p>
<p><br>SQL Server / Access 等微软产品中，我们通常的自定义分页有两种思路：</p>
<p>一种是以 ASP.NET Forum 为代表的、&#8220;临时表&#8221;方法：即在存储过程中建立一个临时表，该临时表包含一个序号字段（1，2，3，....）以及表的主键（其他能够唯一确定一行记录的字段也是可以的）字段。存储过程可能如下：（编号 SS1）</p>
<p>CREATE Procedure GetAllArticles_Paged<br>(<br>&nbsp;&nbsp;&nbsp;&nbsp; @PageIndex int,<br>&nbsp;&nbsp;&nbsp;&nbsp; @PageSize int,<br>&nbsp;&nbsp;&nbsp;&nbsp; @TotalRecords out int,<br>&nbsp;&nbsp;&nbsp;&nbsp; @TotalPages out int<br>)<br>AS</p>
<p>DECLARE @PageLowerBound int<br>DECLARE @PageUpperBound int</p>
<p>-- Set the page bounds<br>SET @PageLowerBound = @PageSize * @PageIndex<br>SET @PageUpperBound = @PageLowerBound + @PageSize + 1</p>
<p>-- Create a temp table to store the select results<br>CREATE TABLE #tmp<br>(<br>&nbsp;&nbsp;&nbsp;&nbsp; RecNo int IDENTITY (1, 1) NOT NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp; ArticleID int<br>)</p>
<p>INSERT INTO #tmp<br>&nbsp;&nbsp;&nbsp;&nbsp; SELECT [ID]<br>&nbsp;&nbsp;&nbsp;&nbsp; FROM Articles<br>&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY PubTime DESC</p>
<p>SELECT A.*<br>FROM Articles A (nolock), #tmp T<br>WHERE A.ID = T.ArticleID AND<br>&nbsp;&nbsp;&nbsp;&nbsp; T.RecNo &gt; @PageLowerBound AND<br>&nbsp;&nbsp;&nbsp;&nbsp; T.RecNo &lt; @PageUpperBound<br>ORDER BY T.RecNo</p>
<p>GO <br>另一种可能更适合程序中&#8220;拼凑&#8221; SQL 语句：用两次 TOP 命令取得我们所要的分页数据，例如：（编号 SS2）</p>
<p>SELECT * FROM<br>&nbsp;&nbsp;&nbsp;&nbsp; (<br>&nbsp;&nbsp;&nbsp;&nbsp; SELECT TOP(PageSize) * FROM<br>&nbsp;&nbsp;&nbsp;&nbsp; (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT TOP (PageSize * PageIndex) *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM Articles<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY PubTime DESC<br>&nbsp;&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY PubTime ASC<br>)<br>ORDER BY PubTime DESC <br>这个的想法就是&#8220;掐头去尾&#8221;，还有不少分页的方法，这里就不一一列出了。</p>
<p>对于 Oracle 数据库，有几处不同严重妨碍了上面几个方法的实施，比如，Oracle 不支持 TOP 关键字：不过这个好像并不十分严重，因为它提供了 rownum 这个隐式游标，可以实现与 TOP 类似的功能，如：</p>
<p>SELECT TOP 10 ... FROM WHERE ... <br>要写成</p>
<p>SELECT ... FROM ... WHERE ... AND rownum &lt;= 10 <br>rownum 是记录序号（1，2，3...），但有一个比较麻烦的事情是：如果 SQL 语句中有 ORDER BY ... 排序的时候，rownum 居然是先&#8220;标号&#8221;后排序！这样，这个序号如果不加处理是不合乎使用需求的。</p>
<p>至于临时表，Oracle 的临时表和 SQL Server 的有很大不同，我还没搞懂这个东西，就不妄加揣测了。</p>
<p>国内网站中介绍 Oracle 分页的资料很少，我找到了一个国外站点（<a href="http://www.faqts.com/">www.faqts.com</a>）的一篇 FAQ，根据这篇文章的介绍，可以如下分页：（编号 Ora1）</p>
<p>SELECT * FROM<br>&nbsp;&nbsp;&nbsp;&nbsp; (<br>&nbsp;&nbsp;&nbsp;&nbsp; SELECT A.*, rownum r<br>&nbsp;&nbsp;&nbsp;&nbsp; FROM<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM Articles<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY PubTime DESC<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) A<br>&nbsp;&nbsp;&nbsp;&nbsp; WHERE rownum &lt;= PageUpperBound<br>&nbsp;&nbsp;&nbsp;&nbsp; ) B<br>WHERE r &gt; PageLowerBound; <br></p>
<img src ="http://www.blogjava.net/yiyan2002/aggbug/111114.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yiyan2002/" target="_blank">shadeclipse</a> 2007-04-16 23:46 <a href="http://www.blogjava.net/yiyan2002/archive/2007/04/16/111114.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql-jdbc的数据转换规则</title><link>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111113.html</link><dc:creator>shadeclipse</dc:creator><author>shadeclipse</author><pubDate>Mon, 16 Apr 2007 15:43:00 GMT</pubDate><guid>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111113.html</guid><wfw:comment>http://www.blogjava.net/yiyan2002/comments/111113.html</wfw:comment><comments>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yiyan2002/comments/commentRss/111113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yiyan2002/services/trackbacks/111113.html</trackback:ping><description><![CDATA[<img height=512 alt="" src="http://www.blogjava.net/images/blogjava_net/yiyan2002/sql_java.gif" width=630 border=0> 
<img src ="http://www.blogjava.net/yiyan2002/aggbug/111113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yiyan2002/" target="_blank">shadeclipse</a> 2007-04-16 23:43 <a href="http://www.blogjava.net/yiyan2002/archive/2007/04/16/111113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纸符转换心得</title><link>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111105.html</link><dc:creator>shadeclipse</dc:creator><author>shadeclipse</author><pubDate>Mon, 16 Apr 2007 15:21:00 GMT</pubDate><guid>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111105.html</guid><wfw:comment>http://www.blogjava.net/yiyan2002/comments/111105.html</wfw:comment><comments>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111105.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yiyan2002/comments/commentRss/111105.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yiyan2002/services/trackbacks/111105.html</trackback:ping><description><![CDATA[<p>1 如何将字串 String 转换成整数 int?&nbsp; </p>
<p>A. 有两个方法: </p>
<p>1). int i = Integer.parseInt([String]); 或&nbsp; <br>i = Integer.parseInt([String],[int radix]); </p>
<p>2). int i = Integer.valueOf(my_str).intValue();&nbsp; </p>
<p>注: 字串转成 Double, Float, Long 的方法大同小异.&nbsp; </p>
<p><br>2 如何将整数 int 转换成字串 String ?&nbsp; </p>
<p><br>A. 有叁种方法: </p>
<p>1.) String s = String.valueOf(i); </p>
<p>2.) String s = Integer.toString(i);&nbsp; </p>
<p>3.) String s = "" + i;&nbsp; </p>
<p>注: Double, Float, Long 转成字串的方法大同小异. </p>
<img src ="http://www.blogjava.net/yiyan2002/aggbug/111105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yiyan2002/" target="_blank">shadeclipse</a> 2007-04-16 23:21 <a href="http://www.blogjava.net/yiyan2002/archive/2007/04/16/111105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据类型使用（转）--</title><link>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111028.html</link><dc:creator>shadeclipse</dc:creator><author>shadeclipse</author><pubDate>Mon, 16 Apr 2007 09:36:00 GMT</pubDate><guid>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111028.html</guid><wfw:comment>http://www.blogjava.net/yiyan2002/comments/111028.html</wfw:comment><comments>http://www.blogjava.net/yiyan2002/archive/2007/04/16/111028.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yiyan2002/comments/commentRss/111028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yiyan2002/services/trackbacks/111028.html</trackback:ping><description><![CDATA[<span style="FONT-FAMILY: Arial">无论是在小得可怜的免费数据库空间或是大型电子商务网站，合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-WEIGHT: bold; COLOR: rgb(51,102,255); FONT-FAMILY: Arial">一、数字类型</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">数字类型按照我的分类方法分为三类：整数类、小数类和数字类。</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">我所谓的&#8220;数字类&#8221;，就是指 DECIMAL 和 NUMERIC，它们是同一种类型。它严格的说不是一种数字类型，<span style="COLOR: rgb(255,0,0)">因为他们实际上是将数字以字符串形式保存的</span>；他的值的每一位 (包括小数点) 占一个字节的存储空间，因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定，在运算中不会&#8220;失真&#8221;，所以比较适合用于&#8220;价格&#8221;、&#8220;金额&#8221;这样对精度要求不高但准确度要求非常高的字段。</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">小数类，即浮点数类型，根据精度的不同，有 FLOAT 和 DOUBLE 两种。它们的优势是精确度，FLOAT 可以表示绝对值非常小、小到约 1.17E-38 (0.000...0117，小数点后面有 37 个零) 的小数，而 DOUBLE 更是可以表示绝对值小到约 2.22E-308 (0.000...0222，小数点后面有 307 个零) 的小数。FLOAT 类型和 DOUBLE 类型占用存储空间分别是 4 字节和 8 字节。如果需要用到小数的字段，精度要求不高的，当然用 FLOAT 了。可是说句实在话，我们&#8220;民用&#8221;的数据，哪有要求精度那么高的呢？这两种类型至今我没有用过――我还没有遇到适合于使用它们的事例。</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">用的最多的，最值得精打细算的，是整数类型。从只占一个字节存储空间的 TINYINT 到占 8 个字节的 BIGINT，挑选一个&#8220;够用&#8221;并且占用存储空间最小的类型是设计数据库时应该考虑的。TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT 占用存储空间分别为 1 字节、2 字节、3 字节、4 字节和 8 字节，就无符号的整数而言，<span style="COLOR: rgb(255,0,0)">这些类型能表示的最大整数分别为 255、65535、16777215、4294967295 和 18446744073709551615</span>。如果用来保存用户的年龄 (举例来说，数据库中保存年龄是不可取的)，用 TINYINT 就够了；九城的《纵横》里，各项技能值，用 SMALLINT 也够了；如果要用作一个肯定不会超过 16000000 行的表的 AUTO_INCREMENT 的 IDENTIFY 字段，当然用 MEDIUMINT 不用 INT，试想，每行节约一个字节，16000000 行可以节约 10 兆多呢。</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-WEIGHT: bold; COLOR: rgb(51,102,255); FONT-FAMILY: Arial">二、日期时间类型</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">日期和时间类型比较简单，无非是 DATE、TIME、DATETIME、TIMESTAMP 和 YEAR 等几个类型。只对日期敏感，而对时间没有要求的字段，就用 DATE 而不用 DATETIME 是不用说的了；单独使用时间的情况也时有发生――使用 TIME；但最多用到的还是用 DATETIME。在日期时间类型上没有什么文章可做，这里就不再详述。</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-WEIGHT: bold; COLOR: rgb(51,102,255); FONT-FAMILY: Arial">三、字符 (串) 类型</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">不要以为字符类型就是 CHAR，CHAR 和 VARCHAR 的区别在于 CHAR 是固定长度，只要你定义一个字段是 CHAR(10)，那么不论你存储的数据是否达到了 10 个字节，它都要占去 10 个字节的空间；而 VARCHAR 则是可变长度的，如果一个字段可能的值是不固定长度的，我们只知道它不可能超过 10 个字符，把它定义为 VARCHAR(10) 是最合算的，<span style="COLOR: rgb(255,0,0)">VARCHAR 类型的占用空间是它的值的实际长度 +1。为什么要 +1 呢？这一个字节用于保存实际使用了多大的长度。</span>从这个 +1 中也应该看到，如果一个字段，它的可能值最长是 10 个字符，而多数情况下也就是用到了 10 个字符时，用 VARCHAR 就不合算了：因为在多数情况下，实际占用空间是 11 个字节，比用 CHAR(10) 还多占用一个字节。</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">举个例子，就是一个存储股票名称和代码的表，股票名称绝大部分是四个字的，即 8 个字节；股票代码，上海的是六位数字，深圳的是四位数字。这些都是固定长度的，股票名称当然要用 CHAR(8)；股票代码虽然是不固定长度，但如果使用 VARCHAR(6)，一个深圳的股票代码实际占用空间是 5 个字节，而一个上海的股票代码要占用 7 个字节！考虑到上海的股票数目比深圳的多，那么用 VARCHAR(6) 就不如 CHAR(6) 合算了。</span><br style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">虽然一个 CHAR 或 VARCHAR 的最大长度可以到 255，我认为大于 20 的 CHAR 是几乎用不到的――很少有大于 20 个字节长度的固定长度的东东吧？不是固定长度的就用 VARCHAR。大于 100 的 VARCHAR 也是几乎用不到的――比这更大的用 TEXT 就好了。TINYTEXT，最大长度为 255，占用空间也是实际长度 +1；TEXT，最大长度 65535，占用空间是实际长度 +2；MEDIUMTEXT，最大长度 16777215，占用空间是实际长度 +3；LONGTEXT，最大长度 4294967295，占用空间是实际长度 +4。为什么 +1、+2、+3、+4？你要是还不知道就该打 PP 了。这些可以用在论坛啊、新闻啊，什么的，用来保存文章的正文。根据实际情况的不同，选择从小到大的不同类型。</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-WEIGHT: bold; COLOR: rgb(51,102,255); FONT-FAMILY: Arial">四、枚举和集合类型</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">枚举 (ENUM) 类型，最多可以定义 65535 种不同的字符串从中做出选择，只能并且必须选择其中一种，占用存储空间是一个或两个字节，由枚举值的数目决定；集合 (SET) 类型，最多可以有 64 个成员，可以选择其中的零个到不限定的多个，占用存储空间是一个到八个字节，由集合可能的成员数目决定。</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="COLOR: rgb(51,153,102); FONT-FAMILY: Arial">举个例子来说，在 SQLServer 中，你可以节约到用一个 BIT 类型来表示性别 (男/女)，但 MySQL 没有 BIT，用 TINTINT 吗？不，可以用 ENUM('帅哥','美眉')，只有两种选择，所以只需一个字节――跟 TINYINT 一样大，但却可以直接用字符串 '帅哥' 和 '美眉' 来存取。真是太方便啦！</span><br style="FONT-FAMILY: Arial"><br style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">好了，MySQL 的数据类型介绍得差不多，我的建库策略也随着介绍数据类型介绍给大家一些。但这只是其中一部分，篇幅有限，不能再细说；其他的，就靠各人在对数据类型理解的基础上，多多实践、多多讨论。<br></span><br><br><br style="FONT-FAMILY: Arial">
<img src ="http://www.blogjava.net/yiyan2002/aggbug/111028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yiyan2002/" target="_blank">shadeclipse</a> 2007-04-16 17:36 <a href="http://www.blogjava.net/yiyan2002/archive/2007/04/16/111028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>