<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sdt.sumida.com.cn:8080/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SDT Community Server</title><link>http://sdt.sumida.com.cn:8080/cs/blogs/</link><description>SDT Forums, Blogs, Photos server.</description><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>性能测试常见误区</title><link>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/12/02/11207.aspx</link><pubDate>Tue, 02 Dec 2008 15:48:00 GMT</pubDate><guid isPermaLink="false">671e4790-9a26-4000-810a-a72ab02f8f44:11207</guid><dc:creator>Coolboy</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;请看下面一个性能测试小案例：&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="宋体"&gt;某公司&lt;span&gt;OA产品的新版本即将发布。为了看看系统的性能，决定安排测试工程师A君执行性能测试任务。A君做法如下：&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&lt;font face="Arial Black"&gt;&lt;span&gt;&lt;font size="3"&gt;1.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="宋体"&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="宋体"&gt;找到一台&lt;/font&gt;&lt;span&gt;&lt;font face="宋体"&gt;PC机，CPU主频1G，内存512M，&lt;/font&gt;……；&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Arial Black"&gt;&lt;span&gt;&lt;font size="3"&gt;2.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="宋体"&gt;在找到的&lt;/font&gt;&lt;span&gt;&lt;font face="宋体"&gt;PC机上搭建了测试环境：安装了Oracle9i、Weblogic等系统软件&lt;/font&gt;；&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Arial Black"&gt;&lt;span&gt;&lt;font size="3"&gt;3.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="宋体"&gt;在自己的工作机上安装了&lt;/font&gt;&lt;span&gt;&lt;font face="宋体"&gt;LoadRunner7.8&lt;/font&gt;;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Arial Black"&gt;&lt;span&gt;&lt;font size="3"&gt;4.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="宋体"&gt;然后录制了登陆、发布公告等功能&lt;/font&gt;；&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Arial Black"&gt;&lt;span&gt;&lt;font size="3"&gt;5.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="宋体"&gt;开始设置&lt;/font&gt;&lt;span&gt;&lt;font face="宋体"&gt;30、50、100、500不同的并发用户数目进行并发&lt;/font&gt;；&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Arial Black"&gt;&lt;span&gt;&lt;font size="3"&gt;6.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="宋体"&gt;最后得出结论：系统只能运行&lt;/font&gt;&lt;span&gt;&lt;font face="宋体"&gt;80个左右的并发用户……&lt;/font&gt;。&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;TEXT-INDENT:21pt;"&gt;&lt;font size="3"&gt;&lt;span&gt;无疑上面的做法存在很多不合理的地方，例如测试内容太少、测试服务器配置太低等。现实工作中，尽管&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;性能测试以其在测试中独特的地位越来越为软件测试人员、开发人员和用户所重视，但是不管是测试人员还是开发人员，仍然在认识上存在这样或者那样的误区。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;误区&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;1&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;：提高一下硬件配置就可以提高性能了，因此性能测试不重要。&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;这是以前系统规模不大时期留下来的认识。&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;font face="Times New Roman"&gt;DOS&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;时代以及后来&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;font face="Times New Roman"&gt;Windows&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;操作系统流行的初期，软件规模一般较小，而硬件的更新却是日新月异，软件性能一般不是突出问题，因为只要升级一下硬件，很容易就解决了性能问题。&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;现在随着软件规模的扩大，提高硬件配置只是解决性能问题的一个基本手段。因为如果软件自身存在性能问题，再多的资源可能也不够用，例如内存泄漏问题，随着时间的增加，内存终究会被耗尽，最后导致系统崩溃。&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;因此，如果用户对软件的性能要求较高，这将意味着不但要从硬件方面来提供性能，还要从数据库、&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;font face="Times New Roman"&gt;WebServer&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;、操作系统配置等方面入手来提高性能，同时开发的软件系统本身也要进行优化，以便全面提高性能。&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;误区&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;：性能测试在所有其它测试完成后，测试一下看看就可以了。&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;这是目前特别普遍的一种现象，例如前面的&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;font face="Times New Roman"&gt;A&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;君，这种现象主要是没有意识到性能测试的重要性。这种做法最严重的后果是如果性能问题是由软件系统本身产生的，可能会无法根治性能问题。例如架构设计方面的失误，可能意味着软件系统将被废掉。&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;当然这并不意味所有的性能测试都要尽早进行，性能测试的启动时间要由软件特点来决定。性能测试策略的制定问题可以参考《程序员》&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;font face="Times New Roman"&gt;2005&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;第&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;font face="Times New Roman"&gt;10&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;、&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;font face="Times New Roman"&gt;11&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;期的《&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;治疗软件亚健康&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;》。&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;误区&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;：性能测试独立于功能测试。&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;功能测试可以发现性能问题，性能测试也能发现功能问题。性能测试和功能测试是紧密联系在一起的，原因之一是由于很多性能问题是由软件自身功能缺陷引起的。如果应用系统功能不完善或者代码运行效率低下，通常会带来一些性能问题。功能测试通常要先于性能测试执行或者同步进行，软件功能完善可以保证性能测试进行得更加顺利。&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;误区&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;：性能测试就是用户并发测试。&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;仍然有很多人（尤其是开发人员和部分项目实施人员）一提到性能测试，就会联想到并发用户测试，进而认为性能测试就是&lt;/span&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;“测试一下多用户的并发情况”&lt;/span&gt;&lt;/strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;。严格地讲，性能测试是以用户并发测试为主的测试。实际性能测试还包含强度测试、大数据量测试等许多内容。&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;误区&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;5&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;：在开发环境下进行一下性能测试就可以了。&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;很多时候，在软件开发完成后会进行性能测试，看一看软件的性能。实际上大多数的开发环境因为硬件条件比较差，所以反映不了过多的性能问题。&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;"&gt;因此性能测试要尽量在高配置的用户投产环境下进行。但是有两种可以例外的情况：一种是为了发现某些功能方面的问题，例如为了发现并发算法的一些缺陷；另外一种就是有非常好的硬件资源或者实验室作为开发环境。&lt;/span&gt;&lt;span style="mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;TEXT-INDENT:21pt;"&gt;&lt;font size="3"&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;误区&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;6&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;：系统存在瓶颈，不可以使用。&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;TEXT-INDENT:21pt;"&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;系统发现了瓶颈，的确是很让人担心的一件事情。不过不要紧，很多的瓶颈可以不必去理会。发现瓶颈的目的主要是为了掌握系统特性，为改善和扩展系统提供依据。因此在性能方面给系统留有&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;30&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;％左右的扩展空间就可以了。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;TEXT-INDENT:21pt;"&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;例如，&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;1000&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;个用户并发时发现了系统瓶颈，而客户的最大并发用户数量在&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;500&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;左右，这样的性能问题完全没有必要处理，要是&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;550&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;或者&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;600&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;个并发用户出现性能问题就应该认真地调整系统性能了。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;误区&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;7&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;：不切实际的性能指标。&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;TEXT-INDENT:21pt;"&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;这种现象主要归结于对软件应用需求的不了解。很多时候，尤其是用户会提出很多不切实际的性能指标，例如，针对&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;500&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;个用户使用的&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;OA&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;系统，可能有的用户负责人会提出要满足&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;100&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;个甚至&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;500&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;个用户并发的性能目标，而实际并发数量不会高于&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;50&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;。这种情况只有和用户进行沟通才可以解决。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:10.5pt;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-size:12.0pt;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:1.0pt;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;"&gt;上面列举的都是日常性能测试工作中相关人员常犯的错误，这些观点只在极其特殊的情况下才正确。希望读者了解这些常见的性能测试误区后，能在以后的工作中避免类似的情况。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=11207" width="1" height="1"&gt;</description><category domain="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/_2760FD804B6DD58B_/default.aspx">性能测试</category></item><item><title>DataTable.Compute Method</title><link>http://sdt.sumida.com.cn:8080/cs/blogs/wicky/archive/2008/11/27/datatable-compute-method.aspx</link><pubDate>Thu, 27 Nov 2008 14:23:00 GMT</pubDate><guid isPermaLink="false">671e4790-9a26-4000-810a-a72ab02f8f44:11152</guid><dc:creator>wicky</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;你试过循环datatable计算某一列的合计值么，有没试过这种方法：&lt;/p&gt;
&lt;p&gt;&lt;span class="keyword"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="background-color: #f2f2f2; border: solid 1px #e5e5e5; width: 100%;"&gt;
    &lt;tr style="vertical-align: top; line-height: normal;"&gt;
        &lt;td style="width: 40px; text-align: right;"&gt;
            &lt;pre style="font-family: courier new; font-size: 11px; color: gray; margin: 0px; padding: 2px; border-right: solid 1px #e7e7e7;"&gt;1
2
3
4
5
6
7
8
9
10
11
&lt;/pre&gt;&lt;/td&gt;
        &lt;td&gt;
            &lt;pre style="overflow: scroll; margin:0px; padding: 2px; padding-left: 8px;"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;/span&amp;gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;private&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;void&lt;/span&gt; ComputeBySalesSalesID(DataSet dataSet)
{
    &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// Presumes a DataTable named "Orders" that has a column named "Total."&lt;/span&gt;
    DataTable table;
    table &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; dataSet.Tables[&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"Orders"&lt;/span&gt;];


    &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// Declare an object variable.&lt;/span&gt;
    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;object&lt;/span&gt; sumObject;
    sumObject &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; table.Compute(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"Sum(Total)"&lt;/span&gt;, &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"EmpID = 5"&lt;/span&gt;);
}&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;&lt;/p&gt;
&lt;p&gt;查找一下帮助，你会有更多发现！&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=11152" width="1" height="1"&gt;</description><category domain="http://sdt.sumida.com.cn:8080/cs/blogs/wicky/archive/tags/ADO.Net/default.aspx">ADO.Net</category></item><item><title>将Sql server 2005数据库复制到Sql server 2000</title><link>http://sdt.sumida.com.cn:8080/cs/blogs/johnking/archive/2008/11/26/sql-server-2005-sql-server-2000.aspx</link><pubDate>Wed, 26 Nov 2008 09:16:00 GMT</pubDate><guid isPermaLink="false">671e4790-9a26-4000-810a-a72ab02f8f44:11117</guid><dc:creator>Johnking</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;如果系统开发使用的数据库是sql server 2005，而客户用的是sql server 2000或者需要在sql server 2000下测试，需要将sql server 2005中的数据库复制到sql server 2000。&lt;/p&gt;
&lt;p&gt;1，在sql server 2000下建立结构完全相同的数据库，然后用Import/Export将数据也导入过来。&lt;/p&gt;
&lt;p&gt;（生成的脚本运行的时候可能有顺序上的错误，数据多的时候导入速度慢）&lt;/p&gt;
&lt;p&gt;2，用sql server 自带的复制（Replication）功能。在源服务器上建立Publication，然后在下面建立Subscription。指定相应的服务器、数据库、登录方式即可。具体打开向导就明白了。&lt;/p&gt;
&lt;p&gt;（完全复制，速度快）&lt;/p&gt;
&lt;p&gt;&amp;nbsp;btw,如果是2000复制到2005，可以直接用Attach了。&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=11117" width="1" height="1"&gt;</description></item><item><title>New ASP.NET Charting Control: &lt;asp:chart runat="server"/&gt; </title><link>http://sdt.sumida.com.cn:8080/cs/blogs/wicky/archive/2008/11/25/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx</link><pubDate>Tue, 25 Nov 2008 13:34:00 GMT</pubDate><guid isPermaLink="false">671e4790-9a26-4000-810a-a72ab02f8f44:11105</guid><dc:creator>wicky</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Microsoft recently released a cool new ASP.NET server control - &amp;lt;asp:chart /&amp;gt; - that can be used for free with ASP.NET 3.5 to enable rich browser-based charting scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&amp;amp;DisplayLang=en" target="_blank"&gt;Download the free Microsoft Chart Controls&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=1D69CE13-E1E5-4315-825C-F14D33A303E9&amp;amp;displaylang=en" target="_blank"&gt;Download the VS 2008 Tool Support for the Chart Controls&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/mschart/Release/ProjectReleases.aspx?ReleaseId=1591" target="_blank"&gt;Download the Microsoft Chart Controls Samples&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EE8F6F35-B087-4324-9DBA-6DD5E844FD9F&amp;amp;displaylang=en" target="_blank"&gt;Download the Microsoft Chart Controls Documentation&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/threads/" target="_blank"&gt;Visit the Microsoft Chart Control Forum&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;微软出品的免费asp.net图形控件，看样子还挺强大。&lt;br /&gt;又打击一片控件商。干脆全部收购得了。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=11105" width="1" height="1"&gt;</description><category domain="http://sdt.sumida.com.cn:8080/cs/blogs/wicky/archive/tags/ASP.Net/default.aspx">ASP.Net</category></item><item><title>一个世界上最懒惰的程序员写的Cache也能让你的复杂计算程序（数据库程序）大大提高速</title><link>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/11/25/cache.aspx</link><pubDate>Mon, 24 Nov 2008 16:16:00 GMT</pubDate><guid isPermaLink="false">671e4790-9a26-4000-810a-a72ab02f8f44:11096</guid><dc:creator>Coolboy</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;仔细模拟一下你的数据库程序，你有没有发现在计算时（特别是多用户计算时）经常重复读取数据库数据？！这是数据库处理程序的性能的最主要的杀手。 &lt;br /&gt;&lt;br /&gt;有些人说在写程序之前应该把算法想好，使得数据记录成批地、一次性地读取。但是这实际上往往不可能，因为复杂的程序贴近逻辑流程才清晰可维护。更何况这也不能解决多用户访问的情况。最好，我们根本不用在写程序时去考虑数据是否会被重复读取从而改变程序流程，但是又能自然而然地防止重复读取数据库。当对计算过程进行优化，而又不想破坏逻辑清晰性的时候，当然就是要依靠简单的Cache —— 对象只要能够缓存几秒钟就好。 &lt;br /&gt;&lt;br /&gt;下面我这里写一个世界上最懒惰的程序员使用.net写的一个最简单的Cache，但是它往往可以让复杂的计算程序大大提高计算速度。 &lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; System;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;namespace&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; DomainBase&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; ObjectCache&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#008000;"&gt;//&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt;Dictionary&amp;lt;K,T&amp;gt; 会自动维护一个空链表来保存不用的单元。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#008000;"&gt;//&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt;这里，使用被缓存对象的“弱引用”，允许这些对象被垃圾回收。&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; Dictionary&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;, WeakReference&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; Buffer &lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;=&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; Dictionary&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;, WeakReference&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;[&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; key]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WeakReference ret;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; (Buffer.TryGetValue(key, &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;out&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; ret) &lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; ret.IsAlive)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; ret.Target;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WeakReference ret;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; (Buffer.TryGetValue(key, &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;out&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; ret))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret.Target &lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;=&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Buffer.Add(key, &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; WeakReference(value));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; Remove(&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="COLOR:#000000;"&gt; key)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Buffer.Remove(key);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;这就是最简单的Cache。例如： &lt;br /&gt;&lt;br /&gt;public Class User &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp; &amp;nbsp; static ObjectCache Buffer=new ObjectCache(); &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; public static GetUser(string id) &lt;br /&gt;&amp;nbsp; &amp;nbsp; { &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; User ret=Buffer[id]; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if(ret==null) &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ret=读取数据库产生User对象(id); &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Buffer[id]=ret; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return ret; &lt;br /&gt;&amp;nbsp; &amp;nbsp; } &lt;br /&gt;..... &lt;br /&gt;&lt;br /&gt;这里，在一个Dictionary &amp;lt;K,T&amp;gt;结构字典中保存了对象的key以及对象的“弱引用”。这样，当内存不足时GC会照样去释放被缓存的对象。当我们需要将对象在几秒钟内进行缓存时，使用这个最简单的Cache很有用。 &lt;br /&gt;&lt;br /&gt;.net framework中有非常多非常多的东西需要程序员去了解，不要仅仅抱着那些空洞、不实惠的“放之四海而皆准”的大部头的著作，有时间要多读一些实际地分析 .net framework 系统本身的方面的资料。在每一个技术中都可以找对一两个细节，这个细节就像掌握DNA技术一样能够让你不但扩展原理而且通过动手能力得到巨大实惠。&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=11096" width="1" height="1"&gt;</description><category domain="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/Cache/default.aspx">Cache</category><category domain="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/_1F90A65E_/default.aspx">速度</category></item><item><title>Visual Studio 2010 and .NET Framework 4.0 Training Kit</title><link>http://sdt.sumida.com.cn:8080/cs/blogs/wicky/archive/2008/11/22/visual-studio-2010-and-net-framework-4-0-training-kit.aspx</link><pubDate>Sat, 22 Nov 2008 13:39:00 GMT</pubDate><guid isPermaLink="false">671e4790-9a26-4000-810a-a72ab02f8f44:11087</guid><dc:creator>wicky</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Visual Studio 2010和.NET Framework 4.0培训包包含了介绍，动手实战教程和例子，包括以下内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C# 4.0 
&lt;li&gt;Visual Basic 10 
&lt;li&gt;F# 
&lt;li&gt;Parallel Computing Platform 
&lt;li&gt;WCF 
&lt;li&gt;WF 
&lt;li&gt;WPF 
&lt;li&gt;ASP.NET AJAX 4.0 
&lt;li&gt;ASP.NET MVC 
&lt;li&gt;Dynamic Data &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;通过这些内容可以帮助您了解如何使用Visual Studio 2010和.NET Framework 4.0。&lt;/p&gt;
&lt;p&gt;Visual Studio 2010 and .NET Framework 4.0 Training Kit下载地址&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=752cb725-969b-4732-a383-ed5740f02e93&amp;amp;DisplayLang=en" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=752cb725-969b-4732-a383-ed5740f02e93&amp;amp;DisplayLang=en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio 2010 and .NET Framework 4.0 CTP下载地址&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=922b4655-93d0-4476-bda4-94cf5f8d4814&amp;amp;DisplayLang=en" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=922b4655-93d0-4476-bda4-94cf5f8d4814&amp;amp;DisplayLang=en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio 2010 and .NET Framework 4.0 概览&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vs2008/products/cc948977.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/vs2008/products/cc948977.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=11087" width="1" height="1"&gt;</description><category domain="http://sdt.sumida.com.cn:8080/cs/blogs/wicky/archive/tags/Dot.Net+Resources/default.aspx">Dot.Net Resources</category></item><item><title>Ado.Net读取Excel</title><link>http://sdt.sumida.com.cn:8080/cs/blogs/slash/archive/2008/11/19/ado-net-excel.aspx</link><pubDate>Wed, 19 Nov 2008 08:45:00 GMT</pubDate><guid isPermaLink="false">671e4790-9a26-4000-810a-a72ab02f8f44:11047</guid><dc:creator>slash</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;经常需要在数据库与Execl之间互导数据。net时代，ADO.NET可以使用使用Microsoft.Jet.OleDb访问访问Excel，网上已经有很多类似的资源，最典型也是最简单的可能如下：（asp.net环境）&lt;/p&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;&amp;nbsp;//&amp;nbsp;连接字符串&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;xlsPath&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;Server.MapPath(&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;~/app_data/somefile.xls&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;&amp;nbsp;//&amp;nbsp;绝对物理路径&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;connStr&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Provider=Microsoft.Jet.OLEDB.4.0;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;+&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Extended&amp;nbsp;Properties=Excel&amp;nbsp;8.0;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;+&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;data&amp;nbsp;source=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;+&amp;nbsp;xlsPath&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;查询语句&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;sql&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;[Sheet1$]&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataSet&amp;nbsp;ds&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;new&amp;nbsp;DataSet()&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OleDbDataAdapter&amp;nbsp;da&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;new&amp;nbsp;OleDbDataAdapter(sql&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&amp;nbsp;connStr)&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;da.Fill(ds)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;填充DataSet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;在这里对DataSet中的数据进行操作&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;输出，绑定数据&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridView1.DataSource&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;ds.Tables&lt;/span&gt;&lt;span style="font-weight:bold;"&gt;[&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span style="font-weight:bold;"&gt;]&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridView1.DataBind()&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
很简单吧？！&lt;img src="http://www.cnblogs.com/Emoticons/QQ/14.gif" alt="" width="20" border="0" height="20" /&gt;一切就像操作数据库一样，只是需要注意的是：&lt;br /&gt;
1。数据提供程序使用Jet，同时需要指定Extended Properties 关键字设置 Excel 特定的属性，不同版本的Excel对应不同的属性值：
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;height:138px;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;用于&amp;nbsp;Extended&amp;nbsp;Properties&amp;nbsp;值的有效&amp;nbsp;Excel&amp;nbsp;版本。&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;对于&amp;nbsp;Microsoft&amp;nbsp;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;8.0&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;)、&lt;/span&gt;&lt;span&gt;9.0&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span&gt;2000&lt;/span&gt;&lt;span&gt;)&amp;nbsp;和&amp;nbsp;&lt;/span&gt;&lt;span&gt;10.0&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span&gt;2002&lt;/span&gt;&lt;span&gt;)&amp;nbsp;工作簿，请使用&amp;nbsp;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;8.0&lt;/span&gt;&lt;span&gt;。&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;对于&amp;nbsp;Microsoft&amp;nbsp;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;5.0&lt;/span&gt;&lt;span&gt;&amp;nbsp;和&amp;nbsp;&lt;/span&gt;&lt;span&gt;7.0&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;)&amp;nbsp;工作簿，请使用&amp;nbsp;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;5.0&lt;/span&gt;&lt;span&gt;。&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;对于&amp;nbsp;Microsoft&amp;nbsp;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;4.0&lt;/span&gt;&lt;span&gt;&amp;nbsp;工作簿，请使用&amp;nbsp;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;4.0&lt;/span&gt;&lt;span&gt;。&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;对于&amp;nbsp;Microsoft&amp;nbsp;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;3.0&lt;/span&gt;&lt;span&gt;&amp;nbsp;工作簿，请使用&amp;nbsp;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;3.0&lt;/span&gt;&lt;span&gt;。&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;/div&gt;
ref：&lt;a href="http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp"&gt;&lt;font color="#4371a6"&gt;http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2。数据源路径使用物理绝对路径（同Access）&lt;br /&gt;
&lt;br /&gt;
3。如何引用表名？&lt;br /&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;对&amp;nbsp;Excel&amp;nbsp;工作簿中表（或范围）的有效引用。&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;若要引用完全使用的工作表的范围，请指定后面跟有美元符号的工作表名称。例如：&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;&lt;/span&gt;&lt;span style="font-weight:bold;"&gt;[&lt;/span&gt;&lt;span&gt;Sheet1$&lt;/span&gt;&lt;span style="font-weight:bold;"&gt;]&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;若要引用工作表上的特定地址范围，请指定后面跟有美元符号和该范围的工作表名称。例如：&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;&lt;/span&gt;&lt;span style="font-weight:bold;"&gt;[&lt;/span&gt;&lt;span&gt;Sheet1$A1:B10&lt;/span&gt;&lt;span style="font-weight:bold;"&gt;]&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;若要引用指定的范围，请使用该范围的名称。例如：&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;&lt;/span&gt;&lt;span style="font-weight:bold;"&gt;[&lt;/span&gt;&lt;span&gt;MyNamedRange&lt;/span&gt;&lt;span style="font-weight:bold;"&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;ref：&lt;a href="http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp"&gt;&lt;font color="#4371a6"&gt;http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
说明：&lt;br /&gt;
可以引用Excel 工作簿中的三种对象：&lt;br /&gt;
• 整张工作表：[Sheet1$]&amp;nbsp; ，Sheet1 就是工作表的名称&lt;br /&gt;
• 工作表上的命名单元格区域：[MyNamedRange] （不需要指定工作表，因为整个xls中命名区域只能唯一）&lt;br /&gt;
XLS命名方法：选中单元格范围》插入》名称》定义&lt;br /&gt;
• 工作表上的未命名单元格区域 ：[Sheet1$A1:B10]&lt;br /&gt;
（在关系数据库提供的各种对象中（表、视图、存储过程等），Excel 数据源仅提供相当于表的对象，它由指定工作簿中的工作表和定义的命名区域组成。命名区域被视为“表”，而工作表被视为“系统表”）&lt;br /&gt;
&lt;br /&gt;
注意：&lt;br /&gt;
•必须使用[]（方括号），否将报：&lt;br /&gt;
&lt;i style="color:red;"&gt;FROM 子句语法错误&lt;br /&gt;
&lt;/i&gt;•必须跟$（美元符号），否则报：&lt;br /&gt;
&lt;i style="color:red;"&gt;Microsoft Jet 数据库引擎找不到对象&amp;#39;Sheet2&amp;#39;。请确定对象是否存在，并正确地写出它的名称和路径。&lt;br /&gt;
&lt;/i&gt;•如果工作表名称不对，或者不存在，将报：&lt;br /&gt;
&lt;i style="color:red;"&gt;&amp;#39;Sheet2$&amp;#39; 不是一个有效名称。请确认它不包含无效的字符或标点，且名称不太长。&lt;br /&gt;
&lt;/i&gt;•在 &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;zh-cn;257819"&gt;&lt;font color="#4371a6"&gt;如何在 Visual Basic 或 VBA 中使用 ADO 来处理 Excel 数据 &lt;/font&gt;&lt;/a&gt;&amp;nbsp; 中提到可以使用&lt;br /&gt;
~&amp;nbsp; 和 &amp;#39;(波浪线和单引号）代替[]，使用ADO。NET测试没有成功，报：&lt;br /&gt;
&lt;i&gt;&lt;font color="#ff0000"&gt;FROM 子句语法错误&lt;/font&gt;&lt;/i&gt;&lt;br /&gt;
•当引用工作表明名（[Sheet1$]）时，数据提供程序认为数据表从指定工作表上最左上方的非空单元格开始。比如，工作表从第 3 行，C 列开始，第3行，C列之前以及第1、2行全为空，则只会显示从第3行，C列开始的数据；以最后表最大范围内的非空单元结束；&lt;br /&gt;
•因此，如需要精确读取范围，应该使用命名区域&amp;nbsp;[NamedRange]，或者指定地址：[Sheet1$A1:C10]&lt;br /&gt;
&lt;br /&gt;
4。如何引用列名？&lt;br /&gt;
•根据默认连接字符串中，数据提供程序会将有效区域内的第一行作为列名，如果此行某单元格为空则用F1、F2表示，其中序数，跟单元格的位置一致，从1开始；&lt;br /&gt;
•如果希望第一行作为数据显示，而非列名，可以在连接串的 Extended Properties 属性指定：HDR=NO&lt;br /&gt;
默认值为：HDR=NO 格式如下：&lt;/p&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;connStr&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Provider=Microsoft.Jet.OLEDB.4.0;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Extended&amp;nbsp;Properties=&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;8.0&lt;/span&gt;&lt;span&gt;;HDR&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;NO&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;data&amp;nbsp;source=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;xlsPath;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;注意： Excel 8.0;HDR=NO&amp;nbsp; 需要使用双引号（这里的反斜扛，是C#中的转义）&lt;br /&gt;
&lt;br /&gt;
ref：
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/WD_ADONET/html/745c5f95-2f02-4674-b378-6d51a7ec2490.htm
中 《连接Excel》节（说明：在我自己的MSDN中，它的例子使用了两个双引号是错的，测试没有通过，原文这样说的：&lt;img src="http://www.cnblogs.com/Emoticons/QQ/01.gif" alt="" width="20" border="0" height="20" /&gt;&lt;/p&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;注意，Extended&amp;nbsp;Properties&amp;nbsp;所需的双引号必须还要加双引号。&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;）&lt;br /&gt;
&lt;br /&gt;
在这种情况下，所有的列名都是以F开头，然后跟索引，从F1开始，F2，F3。。。。。。。&lt;br /&gt;
&lt;br /&gt;
5。为什么有效单元格数据不显示出来？&lt;br /&gt;
出现这种情况的可能原因是，默认连接中，数据提供程序根据前面单元格推断后续单元个的数据类型。&lt;br /&gt;
可以通过 Extended Properties 中指定 IMEX=1 &lt;/p&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;“IMEX&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;”通知驱动程序始终将“互混”数据列作为文本读取&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;ref：同4&lt;br /&gt;
&lt;br /&gt;
PS：在baidu这个问题的时候，有网友说，将每个单元都加上引号，这固然是格方案，但是工作量何其大啊，又不零活，庆幸自己找到”治本药方“&lt;img src="http://www.cnblogs.com/Emoticons/QQ/14.gif" alt="" width="20" border="0" height="20" /&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
more ref：&lt;br /&gt;
&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;zh-cn;257819"&gt;&lt;font color="#4371a6"&gt;如何在 Visual Basic 或 VBA 中使用 ADO 来处理 Excel 数据&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotnet.aspx.cc/ShowDetail.aspx?id=C673E2CD-3F1E-4919-8CE0-D69B894A0599"&gt;&lt;font color="#4371a6"&gt;http://dotnet.aspx.cc/ShowDetail.aspx?id=C673E2CD-3F1E-4919-8CE0-D69B894A0599&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;注意：&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
在网上有很多同志说是加上HDR或IMEX这两个属性值后会报“找不到可安装的ISAM ”的错误。这时解决方法很简单：&lt;br /&gt;
就是把连接串写成如下形式：&lt;/p&gt;
&lt;p&gt;Provider=Microsoft.Jet.Oledb.4.0;Data Source={0};Extended Properties=&lt;span style="color:red;"&gt;&amp;#39;&lt;/span&gt;Excel 8.0;HDR=1; IMEX=1;&lt;span style="color:red;"&gt;&amp;#39; (注意红色标注的单引号)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;而不要写成这样的形式：&lt;/p&gt;
&lt;p&gt;Provider=Microsoft.Jet.Oledb.4.0;Data Source={0};Extended Properties=Excel 8.0;HDR=1; IMEX=1;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;应用程序经常需要与Excel进行数据交互，在上一篇文章&lt;a href="http://www.cnblogs.com/Jinglecat/archive/2006/08/15/477472.html"&gt;&lt;font color="#4371a6"&gt;ADO.NET 如何读取 Excel （上）&lt;/font&gt;&lt;/a&gt;阐
述了基于ADO.NET
读取Excel的基本方法与技巧。今天这里要介绍是如何动态的读取Excel数据，这里的动态指的是事先不知道Excel文件的是什么样的结构，或者无法
预测，比如一张.xls文件有多少张sheet，而且每张sheet的结构可能都不一样等等。&lt;br /&gt;
其实我们可以通过获取Excel的“架构信息”来动态的构造查询语句。这里的“架构信息”与数据库领域的“数据库架构信息”意义相同（也称“元数据”），
对于整个数据库，这些“元数据”通常包括数据库或可通过数据库中的数据源、表和视图得到的目录以及所存在的约束等；而对于数据库中的表，架构信息包括主
键、列和自动编号字段等。&lt;br /&gt;
在&lt;a href="http://www.cnblogs.com/Jinglecat/archive/2006/08/15/477472.html"&gt;&lt;font color="#4371a6"&gt;ADO.NET 如何读取 Excel （上）&lt;/font&gt;&lt;/a&gt;提到&lt;/p&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;在关系数据库提供的各种对象中（表、视图、存储过程等），Excel&amp;nbsp;数据源仅提供相当于表的对象，它由指定工作簿中的工作表和定义的命名区域组成。命名区域被视为“表”，而工作表被视为“系统表”）&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;这里我们将Excel也当作一个“数据库”来对待，然后利用OleDbConnection.GetOleDbSchemaTable 方法&lt;br /&gt;
要获取所需的架构信息，该方法获取的架构信息与ANSI SQl-92是兼容的：&lt;/p&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;注意：对于那些不熟悉&amp;nbsp;OLE&amp;nbsp;DB&amp;nbsp;架构行集的人而言，它们基本上是由&amp;nbsp;ANSI&amp;nbsp;SQL-&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;&amp;nbsp;
定义的数据库构造的标准化架构。每个架构行集具有为指定构造提供定义元数据的一组列（称作&amp;nbsp;.NET&amp;nbsp;文档中的“限制列”）。这样，如果请求架构信息（例
如，列的架构信息或排序规则的架构信息），则您会明确知道可以得到哪种类型的数据。如果希望了解更多信息，请访问&amp;nbsp;Appendix&amp;nbsp;B:
Schema&amp;nbsp;Rowsets。&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;ref：&lt;a href="http://www.microsoft.com/china/msdn/library/office/office/odatanet2.mspx?mfr=true"&gt;&lt;font color="#4371a6"&gt;http://www.microsoft.com/china/msdn/library/office/office/odatanet2.mspx?mfr=true&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
以下是读取Excel文件内“表”定义元数据，并显示出来的的程序片断： &lt;/p&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;读取Excel数据，填充DataSet&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;连接字符串&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;xlsPath&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;Server.MapPath(&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;~/app_data/somefile.xls&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;connStr&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Provider=Microsoft.Jet.OLEDB.4.0;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Extended&amp;nbsp;Properties=&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;8.0&lt;/span&gt;&lt;span&gt;;HDR&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;No;IMEX&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span&gt;+&lt;/span&gt;&amp;nbsp;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;指定扩展属性为&amp;nbsp;Microsoft&amp;nbsp;Excel&amp;nbsp;8.0&amp;nbsp;(97)&amp;nbsp;9.0&amp;nbsp;(2000)&amp;nbsp;10.0&amp;nbsp;(2002)，并且第一行作为数据返回，且以文本方式读取&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;data&amp;nbsp;source=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;xlsPath;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;sql_F&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;[{0}]&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OleDbConnection&amp;nbsp;conn&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OleDbDataAdapter&amp;nbsp;da&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataTable&amp;nbsp;tblSchema&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IList&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;tblNames&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;初始化连接，并打开&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;OleDbConnection(connStr);&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.Open();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;获取数据源的表定义元数据&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;tblSchema&amp;nbsp;=&amp;nbsp;conn.GetSchema(&amp;quot;Tables&amp;quot;);&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display:none;" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tblSchema&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,&amp;nbsp;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;object&lt;/span&gt;&lt;span&gt;[]&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;{&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span&gt;);&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridView1.DataSource&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;tblSchema;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridView1.DataBind();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;关闭连接&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.Close();&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;GetOleDbSchemaTable 方法的详细说明可以参考：&lt;br /&gt;
&lt;a href="http://msdn2.microsoft.com/zh-CN/library/system.data.oledb.oledbconnection.getoledbschematable.aspx"&gt;&lt;font color="#4371a6"&gt;http://msdn2.microsoft.com/zh-CN/library/system.data.oledb.oledbconnection.getoledbschematable.aspx&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
接着是一段利用“架构信息”动态读取Excel内部定义的表单或者命名区域的程序片断：&lt;br /&gt;
&lt;/p&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;读取Excel数据，填充DataSet&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;连接字符串&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;xlsPath&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;Server.MapPath(&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;~/app_data/somefile.xls&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;connStr&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Provider=Microsoft.Jet.OLEDB.4.0;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Extended&amp;nbsp;Properties=&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Excel&amp;nbsp;&lt;/span&gt;&lt;span&gt;8.0&lt;/span&gt;&lt;span&gt;;HDR&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;No;IMEX&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span&gt;+&lt;/span&gt;&amp;nbsp;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;指定扩展属性为&amp;nbsp;Microsoft&amp;nbsp;Excel&amp;nbsp;8.0&amp;nbsp;(97)&amp;nbsp;9.0&amp;nbsp;(2000)&amp;nbsp;10.0&amp;nbsp;(2002)，并且第一行作为数据返回，且以文本方式读取&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;data&amp;nbsp;source=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&amp;nbsp;xlsPath;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;sql_F&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;[{0}]&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OleDbConnection&amp;nbsp;conn&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OleDbDataAdapter&amp;nbsp;da&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataTable&amp;nbsp;tblSchema&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IList&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;tblNames&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;初始化连接，并打开&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;OleDbConnection(connStr);&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.Open();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;获取数据源的表定义元数据&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;tblSchema&amp;nbsp;=&amp;nbsp;conn.GetSchema(&amp;quot;Tables&amp;quot;);&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display:none;" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tblSchema&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,&amp;nbsp;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;object&lt;/span&gt;&lt;span&gt;[]&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;{&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span&gt;);&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;GridView1.DataSource&amp;nbsp;=&amp;nbsp;tblSchema;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;GridView1.DataBind();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;关闭连接&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;conn.Close();&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tblNames&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;List&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display:none;" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;foreach&lt;/span&gt;&lt;span&gt;&amp;nbsp;(DataRow&amp;nbsp;row&amp;nbsp;&lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt;&amp;nbsp;tblSchema.Rows)&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;{&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tblNames.Add((&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;)row[&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;TABLE_NAME&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;]);&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;读取表名&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;初始化适配器&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;da&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;OleDbDataAdapter();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;准备数据，导入DataSet&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataSet&amp;nbsp;ds&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;DataSet();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display:none;" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;foreach&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;tblName&amp;nbsp;&lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt;&amp;nbsp;tblNames)&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;{&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;da.SelectCommand&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&amp;nbsp;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;OleDbCommand(String.Format(sql_F,&amp;nbsp;tblName),&amp;nbsp;conn);&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display:none;" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;try&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;span&gt;{&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;da.Fill(ds,&amp;nbsp;tblName);&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display:none;" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;catch&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;span&gt;{&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;关闭连接&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display:none;" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(conn.State&amp;nbsp;&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;&amp;nbsp;ConnectionState.Open)&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;{&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.Close();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;throw&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;关闭连接&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display:none;" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(conn.State&amp;nbsp;&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;&amp;nbsp;ConnectionState.Open)&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;{&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.Close();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;对导入DataSet的每张sheet进行处理&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;这里仅做显示&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridView1.DataSource&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;ds.Tables[&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;];&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridView1.DataBind();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridView2.DataSource&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;ds.Tables[&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;];&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridView2.DataBind();&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;more&amp;nbsp;codes&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;img src="http://www.cnblogs.com/Images/dot.gif" alt="" /&gt;.&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;这里我们就不需要对SELEC 语句进行“硬编码”，可以根据需要动态的构造FROM 字句的“表名”。&lt;br /&gt;
&lt;br /&gt;
不仅可以，获取表明，还可以获取每张表内的字段名、字段类型等信息：&lt;br /&gt;
&lt;/p&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display:none;" alt="" align="top" /&gt;&lt;span&gt;tblSchema&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,&amp;nbsp;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;object&lt;/span&gt;&lt;span&gt;[]&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;{&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
在ADO.nET 1.x 时候只有OleDb提供了GetOleDbSchemaTable
方法，而SqlClient或者OrcaleClient没有对应的方法，因为对应数据库已经提供了类似功能的存储过程或者系统表供应用程序访问，比如对
于Sql Server： &lt;/p&gt;
&lt;div style="padding:4px 5px 4px 4px;font-size:13px;width:98%;"&gt;&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;span&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt;&amp;nbsp;Northwind.INFORMATION_SCHEMA.COLUMNS&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&amp;nbsp;TABLE_NAME&amp;nbsp;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp;N&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span&gt;Customers&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&lt;img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
而在ADO.NET 2.0中每个xxxConnenction都实现了基类&lt;b&gt;System.Data.Common.DbConnection&lt;/b&gt;的 GetSchemal 方法&lt;br /&gt;
来获取数据源的架构信息。&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=11047" width="1" height="1"&gt;</description></item><item><title>分享开心准则</title><link>http://sdt.sumida.com.cn:8080/cs/blogs/wicky/archive/2008/11/18/11038.aspx</link><pubDate>Tue, 18 Nov 2008 11:15:00 GMT</pubDate><guid isPermaLink="false">671e4790-9a26-4000-810a-a72ab02f8f44:11038</guid><dc:creator>wicky</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;一、&lt;font color="#ff0000"&gt;墨菲定律&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; １９４９年，一位名叫墨菲的空军上尉工程师，认为他的某位同事是个倒霉蛋，不经意间开了句玩笑：“如果一件事情有可能被弄糟，让他去做就一定会弄糟。”&lt;br /&gt;这句话迅速流传，并扩散到世界各地。在流传扩散的过程中，这句笑话逐渐失去它原有的局限性，演变成各种各样的形式，其中一个最通行的形式是：“如果坏事情有可能发生，不管这种可能性多么小，它总会发生，并引起最大可能的损失。”&lt;br /&gt;这就是著名的“墨菲定律”。下面是墨菲定律的一些变种或推论。&lt;br /&gt;人生哲学&lt;br /&gt;１．别试图教猫唱歌，这样不但不会有结果，还会惹猫不高兴?&lt;br /&gt;２．别跟傻瓜吵架，不然旁人会搞不清楚，到底谁是傻瓜?&lt;br /&gt;３．不要以为自己很重要，因为没有你，太阳明天还是一样从东方升上来?&lt;br /&gt;４．笑一笑，明天未必比今天好。&lt;br /&gt;５．好的开始，未必就有好结果；坏的开始，结果往往会更糟。&lt;br /&gt;处世原理&lt;br /&gt;６．你若帮助了一个急需用钱的朋友，他一定会记得你——在他下次急需用钱的时候。&lt;br /&gt;７．有能力的——让他做；没能力的──教他做；做不来的──管理他。&lt;br /&gt;８．你早到了，会议却取消；你准时到，却还要等；迟到，就是迟了。&lt;br /&gt;９．你携伴出游，越不想让人看见，越会遇见熟人。&lt;br /&gt;爱情意义&lt;br /&gt;１０．你爱上的人，总以为你爱上他是因为：他使你想起你的老情人。&lt;br /&gt;１１．你最后硬着头皮寄出的情书；寄达对方的时间有多长，你反悔的时间就有多长。&lt;br /&gt;生活常识&lt;br /&gt;１２．东西越好，越不中用。&lt;br /&gt;１３．一种产品保证６０天不会出故障，等于保证第６１天一定就会坏掉。&lt;br /&gt;１４．东西久久都派不上用场，就可以丢掉；东西一丢掉，往往就必须要用它。&lt;br /&gt;１５．你丢掉了东西时，最先去找的地方，往往也是可能找到的最后一个地方。&lt;br /&gt;１６．你往往会找到不是你正想找的东西。&lt;br /&gt;１７．你出去买爆米花的时候，银幕上偏偏就出现了精彩镜头。&lt;br /&gt;１８．另一排总是动的比较快；你换到另一排，你原来站的那一排，就开始动的比较快了；你站的越久，越有可能是站错了排。&lt;br /&gt;１９．一分钟有多长？ 这要看你是蹲在厕所里面，还是等在厕所外面。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 二、&lt;font color="#ff0000"&gt;二八法则&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1897年，意大利经济学家帕列托在对19世纪英国社会各阶层的财富和收益统计分析时发现：80%的社会财富集中在20%的人手里，而80%的人只拥有社 会财富的20%，这就是“二八法则”。“二八法则”反应了一种不平衡性，但它却在社会、经济及生活中无处不在。&amp;nbsp;&amp;nbsp;&amp;nbsp; 附：破窗理论等&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在商品营销中，商家往往会认为所有顾客一样重要；所有生意、每一种产品都必须付出相同的努力，所有机会都必须抓住。而“二八法则”恰恰指出了在原因和结 果、投入和产出、努力和报酬之间存在这样一种典型的不平衡现象：80%的成绩，归功于20%的努力；市场上80%的产品可能是20%的企业生产的；20% 的顾客可能给商家带来80%的利润。遵循“二八法则”的企业在经营和管理中往往能抓住关键的少数顾客，精确定位，加强服务，达到事半功倍的效果。美国的普 尔斯马特会员店始终坚持会员制，就是基于这一经营理念。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; “二八法则”同样适用于我们的生活，如一个人应该选择在几件事上追求卓越，而不必强求在每件事上都有好的表现；锁定少数能完成的人生目标，而不必追求所有的机会。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 三、&lt;font color="#ff0000"&gt;马太效应&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 《新约·马太福音》中有这样一个故事，一个国王远行前，交给三个仆人每人一锭银子，吩咐他们：“你们去做生意，等我回来时，再来见我。”国王回来时，第一 个仆人说：“主人，你交给我的一锭银子，我已赚了10锭。”于是国王奖励了他10座城邑。第二个仆人报告说：“主人，你给我的一锭银子，我已赚了5锭。” 于是国王便奖励了他5座城邑。第三个仆人报告说：“主人，你给我的一锭银子，我一直包在手巾里存着，我怕丢失，一直没有拿出来。”于是国王命令将第三个仆 人的那锭银子赏给第一个仆人，并且说：“凡是少的，就连他所有的，也要夺过来。凡是多的，还要给他，叫他多多益善。”这就是马太效应，它反映了当今社会中 存在的一个普遍现象，即赢家通吃。&lt;br /&gt;对企业经营发展而言，马太效应告诉我们，要想在某个领域保持优势，就必须在此领域迅速做大。当你成为某个领域的领头羊的时候，即便投资回报率相同，你也能 更轻易地获得比弱小的同行更大的收益。而若没有实力迅速在某个领域做大，就要不停地寻找新的发展领域，才能保证获得较好的回报。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 四、&lt;font color="#ff0000"&gt;手表定理&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 手表定理是指一个人有一只表时，可以知道现在是几点钟，而当他同时拥有两只表时却无法确定。两只表并不能告诉一个人更准确的时间，反而会让看表的人失去对 准确时间的信心。你要做的就是选择其中较信赖的一只，尽力校准它，并以此作为你的标准，听从它的指引行事。记住尼采的话：“兄弟，如果你是幸运的，你只需 有一种道德而不要贪多，这样，你过桥更容易些。”&lt;br /&gt;如果每个人都“选择你所爱，爱你所选择”，无论成败都可以心安理得。然而，困扰很多人的是：他们被“两只表”弄得无所，心身交瘁，不知自己该信仰哪一 个，还有人在环境、他人的压力下，违心选择了自己并不喜欢的道路，为此而郁郁终生，即使取得了受人瞩目的成就，也体会不到成功的快乐。&lt;br /&gt;手表定理在企业经营管理方面给我们一种非常直观的启发，就是对同一个人或同一个组织的管理不能同时采用两种不同的方法，不能同时设置两个不同的目标。 甚至每一个人不能由两个人来同时指挥，否则将使这个企业或这个人无所适从。手表定理所指的另一层含义在于每个人都不能同时挑选两种不同的价值观，否则，你 的行为将陷于混乱。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 五、“&lt;font color="#ff0000"&gt;不值得”定律&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不值得定律最直观的表述是：不值得做的事情，就不值得做好，这个定律似乎再简单不过了，但它的重要性却时时被人们疏忘。不值得定律反映出人们的一种心理， 一个人如果从事的是一份自认为不值得做的事情，往往会保持冷嘲热讽，敷衍了事的态度。不仅成功率小，而且即使成功，也不会觉得有多大的成就感。&lt;br /&gt;哪些事值得做呢？一般而言，这取决于三个因素。&lt;br /&gt;1、价值观。关于价值观我们已经谈了很多，只有符合我们价值观的事，我们才会满怀热情去做。&lt;br /&gt;2、个性和气质。一个人如果做一份与他的个性气质完全背离的工作，他是很难做好的，如一个好交往的人成了档案员，或一个害羞者不得不每天和不同的人打交道。&lt;br /&gt;3、现实的处境。同样一份工作，在不同的处境下去做，给我们的感受也是不同的。例如，在一家大公司，如果你最初做的是打杂跑腿的工作，你很可能认为是不值得的，可是，一旦你被提升为领班或部门经理，你就不会这样认为了。&lt;br /&gt;总结一下，值得做的工作是：符合我们的价值观，适合我们的个性与气质，并能让我们看到期望。如果你的工作不具备这三个因素，你就要考虑换一个更合适的工作，并努力做好它。&lt;br /&gt;因此，对个人来说，应在多种可供选择的奋斗目标及价值观中挑选一种，然后为之而奋斗。“选择你所爱的，爱你所选择的”，才可能激发我们的奋斗毅力，也 才可以心安理得。而对一个企业或组织来说，则要很好地分析员工的性格特性，合理分配工作，如让成就欲较强的职工单独或牵头来完成具有一定风险和难度的工 作，并在其完成时给予定时的肯定和赞扬；让依附欲较强的职工更多地参加到某个团体中共同工作；让权力欲较强的职工担任一个与之能力相适应的主管。同时要加 强员工对企业目标的认同感，让员工感觉到自己所做的工作是值得的，这样才能激发职工的热情。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 六、&lt;font color="#ff0000"&gt;彼得原理&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;管理学家劳伦斯·丁·彼得（Laurence．J．Peter），1917年牛于加拿大的范库弗，1957年获美国华盛顿州立大学学士学位，6年后 又获得该校教育哲学博士学位，他阅历丰富，博学多才，著述颇丰，他的名字还被收人了《美国名人榜》、《美国科学界名人录》和《国际名人传记辞典》等辞书 中。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 彼得原理（The PeterPrinciPle）正是彼得根据千百个有关组织中不能胜任的失败实例的分析而归纳出来的。其具体内容是：“在一个等级制度中，每个职工趋向于 上升到他所不能胜任的地位”。彼得指出，每一个职工由于在原有职位上工作成绩表现好（胜任），就将被提升到更高一级职位；其后，如果继续胜任则将进一步被 提升，直至到达他所不能胜任的职位。由此导出的彼得推论是，“每一个职位最终都将被一个不能胜任其工作的职工所占据。层级组织的工作任务多半是由尚未达到 不胜任阶层的员工完成的。”每一个职工最终都将达到彼得高地，在该处他的提升商数（PQ）为零。至于如何加速提升到这个高地，有两种方法。其一。是上面的 “拉动”，即依靠裙带关系和熟人等从上面拉；其二是自我的“推动”，即自我训练和进步等，而前者是被普遍采用的。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 彼得认为，由于彼得原理的推出，使他“无意间”创设了一门新的科学——层级组织学（hierarchiolgy）。该科学是解开所有阶层制度之谜的钥匙， 因此也是了解整个文明结构的关键所在。凡是置身于商业、工业、政治、行政、军亨、宗教、教育各界的每个人都和层级组织息息相关，亦都受彼得原理的控制。当 然，原理的假设条件是：时间足够长，五层级组织里有足够的阶层。彼得原理被认为是同帕金森定律有联系的。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 帕金森（C．N．Parkinson）是著名的社会理论家，他曾仔细观察并有趣地描述层级组织中冗员累积的现象。他假设，组织中的高级主管采用分化和征服 的策略，故意使组织效率降低，借以提升自己的权势，这种现象即帕金森所说的“爬升金字塔”。彼得认为这种理论设计是有缺陷的，他给出的解释员工累增现象的 原因是层级组织的高级主管真诚追求效率（虽然徒劳无功）。正如彼得原理显示的，许多或大多数主管必已到达他们的不胜任阶层。这些人无法改进现有的状况，因 为所有的员工已经竭尽全力了，于是为了再增进效率，他们只好雇用更多的员工。员工的增加或许可以使效率暂时提升，但是这些新进的人员最后将因晋升过程而到 达不胜任阶层，于是唯一改善的方法就是再次增雇员工，再次获得暂时的高效率，然后是另一。次逐渐归于无效率。这样就使组织中的人数超过了工作的实际需要。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 彼得原理首次公开发表于1960年9月美国联邦出资的一次研习会上，听众是一群负责教育研究计划、并刚获晋升的项目主管，彼得认为他们多数人“只是拼命地 想复制一些老掉牙了的统计习题”，于是引介彼得原理说明他们的困境。演说召来了敌意与嘲笑，但是彼得仍然决定以独特的讽刺手法呈现彼得原理，尽管所有案例 研究都经过精确编纂，且引用的资料也都符合事实，最后定稿于1965年春完成，然后总计有16家之多的出版社无情地拒绝了该书的手稿。1966年，作者零 星地在报纸上发表了几篇述论同一主题的文章，读者的反应异常热烈，引得各个出版社趋之若婺鸳。正如彼得在自传中提到的，人偶尔会在镜中瞥见自己的身影而不 能立即自我辩认，于是在不自知前就加以嘲笑一番，这样的片刻里正好可以使人进一步认识自己，“彼得原理”扮演的正是那样一面镜子。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 七、&lt;font color="#ff0000"&gt;零和游戏&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;一个游戏无论几个人来玩，总有输家和赢家，赢家所赢的都是输家所翰的，所以无论输赢多少，正负相抵，最后游戏的总和都为零，这就是零和游戏。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 零和游戏之所以受人关注，是因为人们在社会生活中处处都能找到与零和游戏雷同或类似的现象。我们大肆开发利用煤炭石油资源，留给后人的便越来越少；我们研 究生产了大量的转基因产品，一些新的病毒也跟着冒了出来；我们修筑了葛洲坝水利工程，白鳍豚就再也不能洄游到金沙江产卵了……&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 发展是硬道理。人类在经历了经济高速增长、科技迅猛发展、全球经济一体化及曰益严重的生态破坏、环境污染之后，可持续发展理论才逐渐浮出水面。零和游戏原 理正在逐渐为“双赢”观念所取代，人们逐渐认识到“利己”而不“损人”才是最美好的结局。实践证明，通过有效合作，实现皆大欢喜的结局是可能的。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 领导者要善于跳出“零和”的圈子，寻找能够实现“双赢”的机遇和突破口，防止负面影响抵消正面成绩。批评下属如何才能做到使其接受而不抵触，发展经济如何才能做到不损害环境，开展竞争如何使自己胜出而不让对方受到伤害，这些都是每一个为官者应该仔细思考的问题。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 还是那句话，世上没有现成的标准答案。这些企业经营管理定律只能供我们参考和借鉴，至于什么条件下适合借鉴哪一种，回到手表定理上去，你需要自己选择一块戴着舒适而又走时准确的手表。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 八、&lt;font color="#ff0000"&gt;华盛顿合作规律&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 华盛顿合作规律说的是：一个人敷衍了事，两个人互相推诿，三个人则永无成事之日。多少有点类似于“三个和尚”的故事。&lt;/p&gt;
&lt;p&gt;　　人与人的合作不是人力的简单相加，而是复杂和微妙得多。在人与人的合作中，假定每一个人的能力都为1,那么10个人的合作结果有时比10大得多，有时甚至比1还要小。因为人不是静止的物，而更像方向不同的能量，相互推动时自然事半功倍，相互抵触时则一事无成。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 九、&lt;font color="#ff0000"&gt;酒与污水定律&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 酒与污水定律是指，如果把一匙酒倒进一桶污水中，你得到的是一桶污水；如果把一匙污水倒进一桶酒中，你得到的还是一桶污水。几乎在任何组织里，都存在几个 难弄的人物，他们存在的目的似乎就是为了把事情搞糟。他们到处搬弄是非，传播流言、破坏组织内部的和谐。最糟糕的是，他们像果箱里的烂苹果，如果你不及时 处理，它会迅速传染，把果箱里其它苹果也弄烂，“烂苹果”的可怕之处在于它那惊人的破坏力。一个正直能干的人进入一个混乱的部门可能会被吞没，而一个人无 德无才者能很快将一个高效的部门变成一盘散沙。组织系统往往是脆弱的，是建立在相互理解、妥协和容忍的基础上的，它很容易被侵害、被毒化。破坏者能力非凡 的另一个重要原因在于，破坏总比建设容易。一个能工巧匠花费时日精心制作的陶瓷器，一头驴子一秒钟就能毁坏掉。如果拥有再多的能工巧匠，也不会有多少像样 的工作成果。如果你的组织里有这样的一头驴子，你应该马上把它清除掉；如果你无力这样做，你就应该把它拴起来。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 十、&lt;font color="#ff0000"&gt;水桶定律&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 一只水桶能装多少水取决于水桶中最短的一块木板而不是最长的那块木板。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 任何组织几乎都有一个共同的特点，即构成组织的各个部分往往是优劣不齐的，但劣势部分却往往决定着整个组织的水平。问题是劣势部分是组织中一个有用的部分，你不能把它当成烂苹果扔掉，否则，你会一点水也装不了，可它却让你那些长的东西白长了!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 劣势决定优势，劣势决定生死，这是市场竞争的残酷法则。水桶定律告诉我们，领导者要有忧患意识，如果你个人身上某个方面是“最短的一块”，你应该考虑尽快 把它补起来；如果你所领导的集体中存在着“一块最短的木板”，你一定要迅速将它做长补齐，否则，它带给你的损失可能是毁灭性的—叫艮多时候，往往就是因为 一件事没做好而毁了所有的努力。有些人也许不知道水桶定律，但都知道“一票否决”，这是中国的“水桶”，有了它你便矢口道水桶定律是多么重要。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 决策和执行发生的机率。让谋划的人尽心谋划，让执行的人全力执行，让他们都从中获得间接而不是直接的功利，这样我们才能把“粥”分得更好。当然，还应有必不可少的独立的监督。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 十一、&lt;font color="#ff0000"&gt;蘑菇管理原理&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 蘑菇长在阴暗的角落，得不到阳光，也没有肥料，自生自灭，只有长到足够高的时候才开始被人关注，可此时它自己已经能够接受阳光了。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 蘑菇管理是大多数组织对待初入门者、初学者的一种管理方法。从传统的观念上讲，“蘑菇经历”是一件好事，它是人才蜕壳羽化前的一种磨炼，对人的意志和耐力 的培养有促进作用。但用发展的眼光来看，蘑菇管理有着先天的不足：一是太慢，还没等它长高长大恐怕疯长的野草就已经把它盖住了，使它没有成长的机会；二是 缺乏主动，有些本来基因较好的蘑菇，一钻出土就碰上了石头，因为得不到帮助，结果胎死腹中。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 让初入门者当上一段时间的“蘑菇”，可以消除他们不切实际的幻想，从而使他们更加接近现实，更实际、更理性地思考问题和处理问题。领导者应当注意的是，这 一过程不可过长，时间太长便会使其消极退化乃至枯萎，须知不给阳光不给关爱不仅是任其自生自灭，而且更是对其成长的抑制。如何让他们成功地走过生命中的这 一段，尽快吸取经验、成熟起来，这才是领导者所应当考虑的。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 十二、&lt;font color="#ff0000"&gt;钱的问题&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当某人告诉你：“不是钱，而是原则问题”时，十有八九就是钱的问题。&lt;br /&gt;照一般的说法，金钱是价值的尺度，交换的媒介，财富的贮藏。但是这种说法忽略了它的另一面，它令人陶醉、令人疯狂、令人激动的一面，也撇开了爱钱的心理不谈。马克思说，金钱是“人情的离心力”，就是指这一方面而言。&lt;br /&gt;关于金钱的本质、作用和功过，从古到今，人们已经留下了无数精辟深刻的格言和妙语。我们常会看到，人们为钱而兴奋，努力赚钱，用财富的画面挑逗自己。 金钱对世界的秩序以及我们的生活产生的影响是巨大的、广泛的，这种影响有时是潜在的，我们往往意识不到它的作用如此巨大，然而奇妙的是：它完全是人类自己 创造的。致富的驱动力并不是起源于生物学上的需要，动物生活中也找不到任何相同的现象。它不能顺应基本的目标，不能满足根本的需求-的确，“致富”的定义 就是获得超过自己需要的东西。然而这个看起来漫无目标的驱动力却是人类最强大的力量，人类为金钱而互相伤害，远超过其他原因。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 附：一街东头那个乞丐去摸彩票。中了五等奖，得款５０元。甚喜！这个冬天好过了，他拥有棉袄、棉裤、和棉鞋了。街西头那个乞丐也去摸彩票。中了一等奖，得款５０万元。狂喜！　&lt;/p&gt;
&lt;p&gt;　首先大宴宾客，热闹三天，煞是风光，耗款３千元，小意思。然后买西服、配手机、穿金戴银，容光焕发，一扫穷气。再次，买房子，满街转悠，要带车库 的。第四，就是买车了。“夏利”太便宜，“奔驰”太贵，还是“桑塔纳”吧！第五……第六……第七……过年的时候，街东头那个乞丐还在到处晃悠，穿着那５０ 元买的“家当”；而街西头那个乞丐却在劳教所里，据说是因为赌博、嫖娼、吸毒、闹事……拥有５０元，街东头的乞丐不再受冻，自得其乐；拥有５０万元，街西 头乞丐成了个大富翁，却也把自己送上了死路。不懂得善用钱财的人，还是没钱点才安全。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 十三、&lt;font color="#ff0000"&gt;奥卡姆剃刀定律&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12世纪，英国奥卡姆的威廉主张唯名论，只承认确实存在的东西，认为那些空洞无物的普遍性概念都是无用的累赘，应当被无情地“剃除”。他主张“如无必要， 勿增实体”。这就是常说的“奥卡姆剃刀”。这把剃刀曾使很多人感到威胁，被认为是异端邪说，威廉本人也因此受到迫害。然而，并未损害这把刀的锋利，相反， 经过数百年的岁月，奥卡姆剃刀已被历史磨得越来越快，并早已超载原来狭窄的领域，而具有广泛、丰富、深刻的意义。&lt;/p&gt;
&lt;p&gt;　　奥卡姆剃刀定律在企业管理中可进一步演化为简单与复杂定律：把事情变复杂很简单，把事情变简单很复杂。这个定律要求，我们在处理事情时，要把握事情的主要实质，把握主流，解决最根本的问题，尤其要顺应自然，不要把事情人为地复杂化，这样才能把事情处理好。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 美国政治学家威尔逊和犯罪学家凯林经过观察提出了“破窗理论”。&lt;/p&gt;
&lt;p&gt;　　如果有人打坏了一栋建筑上的一块玻璃，又没有及时修复，别人就可能受到某些暗示性的纵容，去打碎更多的玻璃。久而久之，这些窗户就给人造成一种无序的感觉，在这种麻木不仁的氛围中，犯罪就会滋生、蔓延。&lt;/p&gt;
&lt;p&gt;　 “破窗理论”更多的是从犯罪的心理去思考问题，但不管把“破窗理论”用在什么领域，角度不同，道理却相似：环境具有强烈的暗示性和诱导性，必须及时修好“第一扇被打碎玻璃的窗户”。&lt;/p&gt;
&lt;p&gt;　　推而广之，从人与环境的关系这个角度去看，我们周围生活中所发生的许多事情，不正是环境暗示和诱导作用的结果吗？&lt;/p&gt;
&lt;p&gt;　　比如，在窗明几净、环境优雅的场所，没有人会大声喧哗，或“噗”地吐出一口痰来；相反，如果环境脏乱不堪，倒是时常可以看见吐痰、便溺、打闹、互骂等不文明的举止。&lt;/p&gt;
&lt;p&gt;　　又比如，在公交车站，如果大家都井然有序地排队上车，又有多少人会不顾众人的文明举动和鄙夷眼光而贸然插队？与这相反，车辆尚未停稳，猴急的人 们你推我拥，争先恐后，后来的人如果想排队上车，恐怕也没有耐心了。因此，环境好，不文明之举也会有所收敛；环境不好，文明的举动也会受到影响。人是环境 的产物，同样，人的行为也是环境的一部分，两者之间是一种互动的关系。&lt;/p&gt;
&lt;p&gt;　　在公共场合，如果每个人都举止优雅、谈吐文明、遵守公德，往往能够营造出文明而富有教养的氛围。千万不要因为我们个人的粗鲁、野蛮和低俗行为而形成“破窗效应”，进而给公共场所带来无序和失去规范的感觉。&lt;/p&gt;
&lt;p&gt;　　从这个意义上说，我们平时一直强调的“从我做起，从身边做起”，就不仅仅是一个空洞的口号，它决定了我们自身的一言一行对环境造成什么样的影响。&lt;/p&gt;
&lt;p&gt;帕金森定律&lt;/p&gt;
&lt;p&gt;　　英国著名历史学家诺斯古德·帕金森通过长期调查研究，写出一本名叫《帕金森定律》的书。他在书中阐述了机构人员膨胀的原因及后果：一个不称职的 官员，可能有三条出路，第一是申请退职，把位子让给能干的人；第二是让一位能干的人来协助自己工作；第三是任用两个水平比自己更低的人当助手。这第一条路 是万万走不得的，因为那样会丧失许多权利；第二条路也不能走，因为那个能干的人会成为自己的对手；看来只有第三条路最适宜。于是，两个平庸的助手分担了他 的工作，他自己则高高在上发号施令，他们不会对自己的权利构成威胁。两个助手既然无能，他们就上行下效，再为自己找两个更加无能的助手。如此类推，就形成 了一个机构臃肿，人浮于事，相互扯皮，效率低下的领导体系。&lt;/p&gt;
&lt;p&gt;　&lt;font color="#ff0000"&gt;　苛希纳定律&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;　　西方管理学中有一条著名的苛希纳定律：如果实际管理人员比最佳人数多两倍，工作时间就要多两倍，工作成本就要多4倍；如果实际管理人员比最佳人员多3倍，工作时间就