﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-IamV.Victor</title><link>http://www.cnblogs.com/iamv/</link><description>Crazystudy!Day Day UP!</description><language>zh-cn</language><lastBuildDate>Fri, 05 Sep 2008 20:36:10 GMT</lastBuildDate><pubDate>Fri, 05 Sep 2008 20:36:10 GMT</pubDate><ttl>60</ttl><item><title>binding maxRetryCount</title><link>http://www.cnblogs.com/iamv/archive/2008/08/29/1279576.html</link><dc:creator>IamV</dc:creator><author>IamV</author><pubDate>Fri, 29 Aug 2008 08:25:00 GMT</pubDate><guid>http://www.cnblogs.com/iamv/archive/2008/08/29/1279576.html</guid><wfw:comment>http://www.cnblogs.com/iamv/comments/1279576.html</wfw:comment><comments>http://www.cnblogs.com/iamv/archive/2008/08/29/1279576.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/iamv/comments/commentRss/1279576.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/iamv/services/trackbacks/1279576.html</trackback:ping><description><![CDATA[<p><strong></strong>&nbsp;</p>
<p><strong><span class="inlineLink" onclick="window.open('/msdn/persona.aspx?ep=0&amp;SiteID=1&amp;fu=%2fmsdn%2fUser%2fProfile.aspx%3fUserID%3d353013%26SiteID%3d1&amp;LCID=1033&amp;ed=true', target='_self')"><a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=943691&amp;SiteID=1">http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=943691&amp;SiteID=1</a></span></strong></p>
<p>&nbsp;==================================================================================</p>
<p>I add a reliableSessino element in my netTcpBinding. and set it's enabled attribute to "true". After send servial requests to service, I cut the net connection, then I receive severial errors:</p>
<p>1. The open operation did not complete within the allotted timeout of 00:00:00. The time allotted to this operation may have been a protion of a longer timeout.</p>
<p>2. &nbsp;Could not connect to net.tcp://10.102.13.118:11120/myservice. The connection attempt lasted for a time span of 00:00:00.4218750. TCP error code 10060: </p>
<p>3. The maximum retry count has been exceeded with no response from the remote endpoint. The reliable session was faulted. This is often an indication that the remote endpoint is no longer available.</p>
<p>4. This request operation sent to net.tcp://10.102.13.118:11120/myservice did not receive a reply within the configuraed timeout (00:10:00). The time allotted to this operation may have been a protion of a longer timeout.</p>
<p>5. The inactivity timeout of(00:05:00) has been exceeded.</p>
<p>The second one metioned maximum retry count,&nbsp;where can I set this attribute?</p>
<p>And I've been trying to understand these errors more exactly. Thanks to anyone who helps me understand thess errors&nbsp;better.</p>
<p>--<strong><span class="inlineLink" onclick="window.open('/msdn/persona.aspx?ep=0&amp;SiteID=1&amp;fu=%2fmsdn%2fUser%2fProfile.aspx%3fUserID%3d353013%26SiteID%3d1&amp;LCID=1033&amp;ed=true', target='_self')">Ray_bihpgh20</span> </strong></p>
<p>====================================================================================</p>
<p>&nbsp; </p>
<p>First, are you testing across a network boundary, and cutting the network cable? If so, good, because just shutting down the service will not simulate this, and thus the RM session is faulted immediately.</p>
<p>You can set max retry count in a custom binding. Consider this server binding:</p>
<font color="#0000ff" size="4">
<p>&lt;</font><font color="#800000" size="4">netTcpBinding</font><font color="#0000ff" size="4">&gt;</p>
<p>&lt;</font><font color="#800000" size="4">binding</font><font color="#0000ff" size="4"> </font><font color="#ff0000" size="4">name</font><font color="#0000ff" size="4">=</font><font size="4">"</font><font color="#0000ff" size="4">netTcpRM</font><font size="4">"</font><font color="#0000ff" size="4">&gt;</p>
<p>&lt;</font><font color="#800000" size="4">reliableSession</font><font color="#0000ff" size="4"> </font><font color="#ff0000" size="4">enabled</font><font color="#0000ff" size="4">=</font><font size="4">"</font><font color="#0000ff" size="4">true</font><font size="4">"</font><font color="#0000ff" size="4"> /&gt;</p>
<p>&lt;/</font><font color="#800000" size="4">binding</font><font color="#0000ff" size="4">&gt;</p>
<p>&lt;/</font><font color="#800000" size="4">netTcpBinding</font><font color="#0000ff" size="4">&gt;</p>
<p></font>&nbsp;</p>
<p>The equivalent client binding as a custom binding, with RM settings expanded looks like this... you can customize settings here:</p>
<font color="#0000ff" size="4"><font color="#0000ff" size="4">
<p>&lt;</font><font color="#800000" size="4">customBinding</font><font color="#0000ff" size="4">&gt;</p>
<p>&lt;</font><font color="#800000" size="4">binding</font><font color="#0000ff" size="4"> </font><font color="#ff0000" size="4">name</font><font color="#0000ff" size="4">=</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4">customRM</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4">&gt;</p>
<p>&lt;</font><font color="#800000" size="4">reliableSession</font><font color="#0000ff" size="4"> </font><font color="#ff0000" size="4">maxRetryCount</font><font color="#0000ff" size="4">=</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4">8</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4"> </font><font color="#ff0000" size="4">acknowledgementInterval</font><font color="#0000ff" size="4">=</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4">00:00:00.2000000</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4"> </font><font color="#ff0000" size="4">flowControlEnabled</font><font color="#0000ff" size="4">=</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4">true</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4"> </font><font color="#ff0000" size="4">inactivityTimeout</font><font color="#0000ff" size="4">=</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4">00:10:00</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4"> </font><font color="#ff0000" size="4">maxPendingChannels</font><font color="#0000ff" size="4">=</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4">4</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4"> </font><font color="#ff0000" size="4">maxTransferWindowSize</font><font color="#0000ff" size="4">=</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4">8</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4"> </font><font color="#ff0000" size="4">ordered</font><font color="#0000ff" size="4">=</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4">true</font><font color="#000000" size="4">"</font><font color="#0000ff" size="4"> /&gt;</p>
<p>&lt;</font><font color="#800000" size="4">windowsStreamSecurity</font><font color="#0000ff" size="4">/&gt;</p>
<p>&lt;</font><font color="#800000" size="4">binaryMessageEncoding</font><font color="#0000ff" size="4">/&gt;</p>
<p>&lt;</font><font color="#800000" size="4">tcpTransport</font><font color="#0000ff" size="4">/&gt;</p>
<p>&lt;/</font><font color="#800000" size="4">binding</font><font color="#0000ff" size="4">&gt;</p>
<p>&lt;/</font><font color="#800000" size="4">customBinding</font><font color="#0000ff" size="4">&gt;</p>
<p></font></font>&nbsp;</p>
<p>--<span class="inlineLink" onclick="window.open('/msdn/persona.aspx?ep=0&amp;SiteID=1&amp;fu=%2fmsdn%2fUser%2fProfile.aspx%3fUserID%3d38868%26SiteID%3d1&amp;LCID=1033&amp;ed=true', target='_self')"><strong>Michele Leroux Bustamante</strong></span></p>
<p>===============================================================================</p>
<p>&nbsp;</p>
<p>&nbsp; </p>
<p>All these exceptions are expected if you cut the wire and never reconnect it. Different exceptions get thrown depending on the method that's being invoked and/or the state the channel is currently in.</p>
<p>1. Will be thrown out of Open() if the reliable session couldn't be established (in technical terms, a CreateSequenceResponse was never received). You can increase the amount of time the channel will try with the OpenTimeout - we retry CreateSequence messages every 10 seconds.</p>
<p>2. This would also be thrown out of Open() if the method got this exception out of the transport before getting a chance to throw a TimeoutException.</p>
<p>3. This would be thrown out of Send() if the channel never received an acknowledgement for that message. The channel tried resending the message up to MaxRetryCount times.</p>
<p>4. This would be thrown out of Request() if the SendTimeout was hit before MaxRetryCount.</p>
<p>5. This would be thrown if the InactivityTimeout was hit before the SendTimeout or the MaxRetryCount.</p>
<p>Ondrej</p>
<p>--<strong><span class="inlineLink" onclick="window.open('/msdn/persona.aspx?ep=0&amp;SiteID=1&amp;fu=%2fmsdn%2fUser%2fProfile.aspx%3fUserID%3d38471%26SiteID%3d1&amp;LCID=1033&amp;ed=true', target='_self')">Ondrej Hrebicek - MSFT</span> </strong><br />
<br />
</p>
<p>=================================================================================</p>
<p>&nbsp; </p>
<p>Thank you, that really helped.</p>
<p>If I use netTcpBinding, I can't set <font color="#000000">maxRetryCount, right? I want to know exactly that&nbsp;if&nbsp;I&nbsp;use netTcpBinding, how many times it will retry sending the message? 8 times?</font></p>
<p>--<strong><span class="inlineLink" onclick="window.open('/msdn/persona.aspx?ep=0&amp;SiteID=1&amp;fu=%2fmsdn%2fUser%2fProfile.aspx%3fUserID%3d353013%26SiteID%3d1&amp;LCID=1033&amp;ed=true', target='_self')">Ray_bihpgh20</span> </strong></p>
<p>==================================================================================</p>
<p>&nbsp;</p>
<p>That's correct. The MaxRetryCount setting is only available on the ReliableSessionBindingElement, which means it's accessible through a CustomBinding only. The default value is indeed 8.</p>
<p>--<strong><span class="inlineLink" onclick="window.open('/msdn/persona.aspx?ep=0&amp;SiteID=1&amp;fu=%2fmsdn%2fUser%2fProfile.aspx%3fUserID%3d38471%26SiteID%3d1&amp;LCID=1033&amp;ed=true', target='_self')">Ondrej Hrebicek - MSFT</span> </strong></p>
<p>&nbsp;</p>
<img src ="http://www.cnblogs.com/iamv/aggbug/1279576.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42116/" target="_blank">[新闻]消息称MySQL创始人已向Sun提交辞呈</a>]]></description></item><item><title>反射</title><link>http://www.cnblogs.com/iamv/archive/2008/08/27/1277813.html</link><dc:creator>IamV</dc:creator><author>IamV</author><pubDate>Wed, 27 Aug 2008 08:28:00 GMT</pubDate><guid>http://www.cnblogs.com/iamv/archive/2008/08/27/1277813.html</guid><wfw:comment>http://www.cnblogs.com/iamv/comments/1277813.html</wfw:comment><comments>http://www.cnblogs.com/iamv/archive/2008/08/27/1277813.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/iamv/comments/commentRss/1277813.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/iamv/services/trackbacks/1277813.html</trackback:ping><description><![CDATA[<table style="table-layout: fixed">
    <tr>
            <td>
            <div class="cnt">
            <p><font style="font-size: 12px">以下是摘自CSDN的关于Dotnet的&#8220;反射&#8221;的入门知识。</font></p>
            <p><font style="font-size: 12px">1、什么是反射<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reflection，中文翻译为反射。<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是.Net中获取运行时类型信息的方式，.Net的应用程序由几个部分：&#8216;程序集(Assembly)&#8217;、&#8216;模块(Module)&#8217;、&#8216;类型(class)&#8217;组成，而反射提供一种编程的方式，让程序员可以在程序运行期获得这几个组成部分的相关信息，例如：</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Assembly类可以获得正在运行的装配件信息，也可以动态的加载装配件，以及在装配件中查找类型信息，并创建该类型的实例。<br />
            Type类可以获得对象的类型信息，此信息包含对象的所有要素：方法、构造器、属性等等，通过Type类可以得到这些要素的信息，并且调用之。<br />
            MethodInfo包含方法的信息，通过这个类可以得到方法的名称、参数、返回值等，并且可以调用之。<br />
            诸如此类，还有FieldInfo、EventInfo等等，这些类都包含在System.Reflection命名空间下。</font></p>
            <p><font style="font-size: 12px">2、命名空间与装配件的关系<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很多人对这个概念可能还是很不清晰，对于合格的.Net程序员，有必要对这点进行澄清。<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命名空间类似与Java的包，但又不完全等同，因为Java的包必须按照目录结构来放置，命名空间则不需要。</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 装配件是.Net应用程序执行的最小单位，编译出来的.dll、.exe都是装配件。</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 装配件和命名空间的关系不是一一对应，也不互相包含，一个装配件里面可以有多个命名空间，一个命名空间也可以在多个装配件中存在，这样说可能有点模糊，举个例子：<br />
            装配件A：<br />
            namespace N1<br />
            {<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public class AC1 {&#8230;}<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public class AC2 {&#8230;}<br />
            }<br />
            namespace N2<br />
            {<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public class AC3 {&#8230;}<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public class AC4{&#8230;}<br />
            }<br />
            装配件B：<br />
            namespace N1<br />
            {<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public class BC1 {&#8230;}<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public class BC2 {&#8230;}<br />
            }<br />
            namespace N2<br />
            {<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public class BC3 {&#8230;}<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public class BC4{&#8230;}<br />
            }</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这两个装配件中都有N1和N2两个命名空间，而且各声明了两个类，这样是完全可以的，然后我们在一个应用程序中引用装配件A，那么在这个应用程序中，我们能看到N1下面的类为AC1和AC2，N2下面的类为AC3和AC4。<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接着我们去掉对A的引用，加上对B的引用，那么我们在这个应用程序下能看到的N1下面的类变成了BC1和BC2，N2下面也一样。<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果我们同时引用这两个装配件，那么N1下面我们就能看到四个类：AC1、AC2、BC1和BC2。</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 到这里，我们可以清楚一个概念了，命名空间只是说明一个类型是那个族的，比如有人是汉族、有人是回族；而装配件表明一个类型住在哪里，比如有人住在北京、有人住在上海；那么北京有汉族人，也有回族人，上海有汉族人，也有回族人，这是不矛盾的。</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上面我们说了，装配件是一个类型居住的地方，那么在一个程序中要使用一个类，就必须告诉编译器这个类住在哪儿，编译器才能找到它，也就是说必须引用该装配件。<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 那么如果在编写程序的时候，也许不确定这个类在哪里，仅仅只是知道它的名称，就不能使用了吗？答案是可以，这就是反射了，就是在程序运行的时候提供该类型的地址，而去找到它。<br />
            有兴趣的话，接着往下看吧。</font></p>
            <p><font style="font-size: 12px">3、运行期得到类型信息有什么用<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有人也许疑问，既然在开发时就能够写好代码，干嘛还放到运行期去做，不光繁琐，而且效率也受影响。<br />
            这就是个见仁见智的问题了，就跟早绑定和晚绑定一样，应用到不同的场合。有的人反对晚绑定，理由是损耗效率，但是很多人在享受虚函数带来的好处的时侯还没有意识到他已经用上了晚绑定。这个问题说开去，不是三言两语能讲清楚的，所以就点到为止了。<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我的看法是，晚绑定能够带来很多设计上的便利，合适的使用能够大大提高程序的复用性和灵活性，但是任何东西都有两面性，使用的时侯，需要再三衡量。</font></p>
            <p><font style="font-size: 12px">接着说，运行期得到类型信息到底有什么用呢？<br />
            还是举个例子来说明，很多软件开发者喜欢在自己的软件中留下一些接口，其他人可以编写一些插件来扩充软件的功能，比如我有一个媒体播放器，我希望以后可以很方便的扩展识别的格式，那么我声明一个接口：<br />
            public interface IMediaFormat<br />
            {<br />
            string Extension {get;}<br />
            Decoder GetDecoder();<br />
            }<br />
            这个接口中包含一个Extension属性，这个属性返回支持的扩展名，另一个方法返回一个解码器的对象（这里我假设了一个Decoder的类，这个类提供把文件流解码的功能，扩展插件可以派生之），通过解码器对象我就可以解释文件流。<br />
            那么我规定所有的解码插件都必须派生一个解码器，并且实现这个接口，在GetDecoder方法中返回解码器对象，并且将其类型的名称配置到我的配置文件里面。<br />
            这样的话，我就不需要在开发播放器的时侯知道将来扩展的格式的类型，只需要从配置文件中获取现在所有解码器的类型名称，而动态的创建媒体格式的对象，将其转换为IMediaFormat接口来使用。<br />
            <br />
            这就是一个反射的典型应用。<br />
            4、如何使用反射获取类型<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先我们来看如何获得类型信息。<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 获得类型信息有两种方法，一种是得到实例对象<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个时侯我仅仅是得到这个实例对象，得到的方式也许是一个object的引用，也许是一个接口的引用，但是我并不知道它的确切类型，我需要了解，那么就可以通过调用System.Object上声明的方法GetType来获取实例对象的类型对象，比如在某个方法内，我需要判断传递进来的参数是否实现了某个接口，如果实现了，则调用该接口的一个方法：<br />
            &#8230;<br />
            public void Process( object processObj )<br />
            {<br />
            Type t = processsObj.GetType();<br />
            if( t.GetInterface(&#8220;ITest&#8221;) !=null )<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;<br />
            }<br />
            &#8230;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外一种获取类型的方法是通过Type.GetType以及Assembly.GetType方法，如：<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type t = Type.GetType(&#8220;System.String&#8221;);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 需要注意的是，前面我们讲到了命名空间和装配件的关系，要查找一个类，必须指定它所在的装配件，或者在已经获得的Assembly实例上面调用GetType。<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本装配件中类型可以只写类型名称，另一个例外是mscorlib.dll，这个装配件中声明的类型也可以省略装配件名称（.Net装配件编译的时候，默认都引用了mscorlib.dll，除非在编译的时候明确指定不引用它），比如：<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.String是在mscorlib.dll中声明的，上面的Type t = Type.GetType(&#8220;System.String&#8221;)是正确的<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Data.DataTable是在System.Data.dll中声明的，那么：<br />
            Type.GetType(&#8220;System.Data.DataTable&#8221;)就只能得到空引用。<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须：<br />
            Type t = Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样才可以，大家可以看下面这个帖子：<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><a href="http://expert.csdn.net/Expert/topic/2210/2210762.xml?temp=.1919977"><font style="font-size: 12px" color="#222266">http://expert.csdn.net/Expert/topic/2210/2210762.xml?temp=.1919977</font></a><br />
            <font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qqchen的回答很精彩</font></p>
            <p><br />
            <font style="font-size: 12px">5、如何根据类型来动态创建对象<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Activator提供了方法来根据类型动态创建对象，比如创建一个DataTable：</font></p>
            <p><font style="font-size: 12px">Type t = Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");</font></p>
            <p><font style="font-size: 12px">DataTable table = (DataTable)Activator.CreateInstance(t);</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp; 例二：根据有参数的构造器创建对象<br />
            namespace TestSpace {<br />
            public class TestClass<br />
            {<br />
            &nbsp;&nbsp;&nbsp;&nbsp; private string _value;<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public TestClass(string value) {<br />
            _value=value;<br />
            &nbsp;&nbsp;&nbsp;&nbsp; }<br />
            }<br />
            }<br />
            &#8230;<br />
            Type t = Type.GetType(&#8220;TestSpace.TestClass&#8221;);<br />
            Object[] constructParms = new object[] {&#8220;hello&#8221;}; //构造器参数<br />
            TestClass obj = (TestClass)Activator.CreateInstance(t,constructParms);<br />
            &#8230;<br />
            把参数按照顺序放入一个Object数组中即可<br />
            6、如何获取方法以及动态调用方法<br />
            namespace TestSpace<br />
            {<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public class TestClass {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string _value;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public TestClass() {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public TestClass(string value) {<br />
            _value = value;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string GetValue( string prefix ) {<br />
            if( _value==null )<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "NULL";<br />
            else<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return prefix+" : "+_value;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Value {<br />
            set {<br />
            &nbsp;&nbsp;&nbsp; _value=value;<br />
            }<br />
            get {<br />
            &nbsp;&nbsp;&nbsp; if( _value==null )<br />
            &nbsp;&nbsp;&nbsp;&nbsp; return "NULL";<br />
            &nbsp;&nbsp;&nbsp; else<br />
            &nbsp;&nbsp;&nbsp;&nbsp; return _value;<br />
            }<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp;&nbsp; }<br />
            }</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上面是一个简单的类，包含一个有参数的构造器，一个GetValue的方法，一个Value属性，我们可以通过方法的名称来得到方法并且调用之，如：</font></p>
            <p><font style="font-size: 12px">//获取类型信息<br />
            Type t = Type.GetType("TestSpace.TestClass");<br />
            //构造器的参数<br />
            object[] constuctParms = new object[]{"timmy"};<br />
            //根据类型创建对象<br />
            object dObj = Activator.CreateInstance(t,constuctParms);<br />
            //获取方法的信息<br />
            MethodInfo method = t.GetMethod("GetValue");<br />
            //调用方法的一些标志位，这里的含义是Public并且是实例方法，这也是默认的值<br />
            BindingFlags flag = BindingFlags.Public | BindingFlags.Instance;<br />
            //GetValue方法的参数<br />
            object[] parameters = new object[]{"Hello"};<br />
            //调用方法，用一个object接收返回值<br />
            object returnValue = method.Invoke(dObj,flag,Type.DefaultBinder,parameters,null);</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 属性与方法的调用大同小异，大家也可以参考MSDN</font></p>
            <p><font style="font-size: 12px">7、动态创建委托<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 委托是C#中实现事件的基础，有时候不可避免的要动态的创建委托，实际上委托也是一种类型：System.Delegate，所有的委托都是从这个类派生的<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Delegate提供了一些静态方法来动态创建一个委托，比如一个委托：</font></p>
            <p><font style="font-size: 12px">namespace TestSpace {<br />
            &nbsp;&nbsp;&nbsp;&nbsp; delegate string TestDelegate(string value);<br />
            &nbsp;&nbsp;&nbsp;&nbsp; public class TestClass {<br />
            public TestClass() {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void GetValue(string value) {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return value;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            }<br />
            <br />
            使用示例：<br />
            TestClass obj = new TestClass();<br />
            &nbsp;&nbsp;<br />
            //获取类型，实际上这里也可以直接用typeof来获取类型<br />
            Type t = Type.GetType(&#8220;TestSpace.TestClass&#8221;);<br />
            //创建代理，传入类型、创建代理的对象以及方法名称<br />
            TestDelegate method = (TestDelegate)Delegate.CreateDelegate(t,obj,&#8221;GetValue&#8221;);</font></p>
            <p><font style="font-size: 12px">String returnValue = method(&#8220;hello&#8221;);</font></p>
            <p><font style="font-size: 12px" color="#ff0000">关于Type.GetType(string ATypeName)函数，这里的ATypeName需要填入全名，区分大小写（当然此函数也有一个版本是忽略大小写的），比如要得到String类型，则需要写成Type.GetType("System.String");<br />
            另外还有一点，Type.GetType("System.String"会执行成功，但是Type.GetType("MyNameSpace.MyClass")执行返回总是null——这里的MyNameSpace是自定义的命名空间，MyClass是自定义的类，其实如果执行Type.GetType("System.Data.SqlClient.SqlCommand")也是返回null，那是为什么呢？其实反射的时候需要先装载应用程序集，而System.String是一个例外，因为反射的时候默认装载了&#8220;mscrolib.dll&#8221;，而System.String在这个程序集中，所以就不用装载了，也就是说出现在mscrolib.dll程序集中的类型都是不用装载而可以直接调用Type.GetType(string)函数的。那怎样获取其他程序集中的类型呢？其实也很简单。</font></p>
            <p><font style="font-size: 12px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
            Assembly a = Assembly.Load("Mydll");<br />
            Type t = a.GetType("MyNameSpace.MyClass");</font></p>
            </div>
            </td>
        </tr>
    </table>
<img src ="http://www.cnblogs.com/iamv/aggbug/1277813.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42115/" target="_blank">[新闻]谷歌Chrome浏览器即将更换LOGO颜色？</a>]]></description></item><item><title>dataTable中筛选数据（datatable.select 和dataview.RowFilter）</title><link>http://www.cnblogs.com/iamv/archive/2008/08/26/1276496.html</link><dc:creator>IamV</dc:creator><author>IamV</author><pubDate>Tue, 26 Aug 2008 03:21:00 GMT</pubDate><guid>http://www.cnblogs.com/iamv/archive/2008/08/26/1276496.html</guid><wfw:comment>http://www.cnblogs.com/iamv/comments/1276496.html</wfw:comment><comments>http://www.cnblogs.com/iamv/archive/2008/08/26/1276496.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/iamv/comments/commentRss/1276496.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/iamv/services/trackbacks/1276496.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conn.Open();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;SqlDataAdapter sda=new SqlDataAdapter(SQL,Conn);<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataSet ds=new DataSet();<br />
&nbsp;&nbsp;&nbsp;&nbsp;sda.Fill(ds,"jing");<br />
&nbsp;&nbsp;&nbsp;&nbsp;ds.WriteXml(path);<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataTable newdt = new DataTable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataTable dt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;dt=ds.Tables["jing"];<br />
&nbsp;&nbsp;&nbsp;&nbsp;newdt=dt.Clone();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Label1.Text="1";<br />
&nbsp;&nbsp;&nbsp;&nbsp;Label2.Text="2008/01/04";<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.Data.DataRow[] row=dt.Select("father="+Label1.Text+"and areaID=1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(row.Length &gt;0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a=row[0]["areaID"].ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;//循环添加行<br />
&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;row.Length;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newdt.ImportRow((System.Data.DataRow)row[i]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataGrid1.DataSource=newdt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataGrid1.DataBind ();//<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataView dw=new DataView();<br />
&nbsp;&nbsp;&nbsp;&nbsp;dw.Table =ds.Tables ["jing"];<br />
&nbsp;&nbsp;&nbsp;&nbsp;dw.RowFilter="father=1 or father=2";<br />
&nbsp;&nbsp;&nbsp;&nbsp;string temp1="father="+Label1.Text+"and date='"+Label2.Text+"'";<br />
&nbsp;&nbsp;&nbsp;&nbsp;dw.RowFilter=temp1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataGrid2.DataSource=dw;<br />
&nbsp;&nbsp;&nbsp;&nbsp;DataGrid2.DataBind ();</p>
<p>&nbsp;</p>
<p><a href="http://blog.csdn.net/xiaoxiaohai123/articles/2323893.aspx">http://blog.csdn.net/xiaoxiaohai123/articles/2323893.aspx</a></p>
<img src ="http://www.cnblogs.com/iamv/aggbug/1276496.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42101/" target="_blank">[新闻]淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略</a>]]></description></item><item><title>全球化与本地化之全球化 多语言简单实现</title><link>http://www.cnblogs.com/iamv/archive/2008/08/25/1276115.html</link><dc:creator>IamV</dc:creator><author>IamV</author><pubDate>Mon, 25 Aug 2008 13:13:00 GMT</pubDate><guid>http://www.cnblogs.com/iamv/archive/2008/08/25/1276115.html</guid><wfw:comment>http://www.cnblogs.com/iamv/comments/1276115.html</wfw:comment><comments>http://www.cnblogs.com/iamv/archive/2008/08/25/1276115.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/iamv/comments/commentRss/1276115.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/iamv/services/trackbacks/1276115.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>本文内容摘自网络-&gt; 学习收集</p>
<p>&nbsp;</p>
<p>介绍<br />
<br />
当每个开发者创建全球化的产品和程序时,全球化和本地化是两个重要的步骤.<br />
<br />
全球化一个asp.net 2.0站点<br />
<br />
语言也决定于地理位置,比如法语同时在法国和加拿大使用.但是法国使用的法语和加拿大使用的法语有很大的区别.所以我们要同时指定语言和地区.比如fr代表法语,fr-FR指的是法国的法语.<br />
<br />
.NET FCL中的CultureInfo有两个属性,我们可以重载改类的构造函数,用来改变当前执行线程的语言.<br />
<br />
1.UICulture:这个属性帮助运行时从资源文件加载资源字符,可以设置成无确定地区的语言,如<br />
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr");或<br />
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA");<br />
<br />
2.Culture:这个属性只能为制定区域的语言<br />
<br />
UICulture和Culture的区别是:UICulture是用来加载资源文件,Culture是用来设置日期,数字货币格式的.<br />
<br />
有时候我们需要一个与语言区域无关的语言,他可能是变化不定的.我们可以用CultureInfo.InvariantCulture属性.<br />
<br />
UICulture和Culture属性都可以在web.config的<font color="#008080">&lt;</font>globalization<font color="#008080">&gt;</font>中定义.他们也可以在页面级设置.但是我们也能动态的设置这些值.如上面代码所示.<br />
<br />
更改语言<br />
<br />
1.用浏览器设置.我们需要设置Culture和UICulture的值为auto且enableClientBasedCulture=true:<br />
<font color="#008080">&lt;</font>GLOBALIZATION<font color="#008080"> culture=</font><font color="#ff00ff">"auto"</font><font color="#008080"> uiculture=</font><font color="#ff00ff">"auto"</font><font color="#008080"> enableClientBasedCulture=</font><font color="#ff00ff">"true"</font><font color="#008080"> /&gt;</font><br />
<br />
2.用户设置.我们可以提供一个选项让用户来选定或改变语言区域.<br />
<br />
如果要使我们的程序全球化就必须遵照以下几点:<br />
1.所有的内容必须本地化 这意味着所有的字符串和文本根据语言和区域显示.<br />
2.每个控件的标题和内容必须根据语言和区域显示.<br />
3.时间日期须根据语言区域格式化<br />
4.所有发送给用户消息须根据语言和区域显示<br />
<br />
如果要本地化整个应用程序,我们要把资源文件添加到App_GlobalResources文件夹中,如TestSiteResource.resx,TestSiteResource.zh-CN.resx<br />
如果仅仅本地化一些特定的页面,我们将资源文件添加到App_LocalDirectory文件夹,文件命名应该如下:<br />
MyPage.aspx.resx:这是MyPage.aspx的默认资源文件<br />
MyPage.aspx.zh-CN.resx:当语言区域设定到中文,仅程序中的MyPage.aspx页面被本地化.<br />
<br />
String welcome = Resources.TestSiteResources.Welcome;<br />
这行代码,我们用到了当资源文件被编译时asp.net自动创建的Resources名字空间.这可以读取资源文件里面的内容.我们还可以用其他两个方法达到同样的目的:<br />
<br />
1.隐式本地化 为控件指定meta标记,使asp.net从resourcekey属性中获取资源文件的值:<br />
<font color="#008080">&lt;</font>asp<font color="#008080">:</font><font color="#2e8b57"><strong>Label</strong></font><font color="#008080"> </font><font color="#2e8b57"><strong>id</strong></font><font color="#008080">=</font><font color="#ff00ff">lblWelcome</font><font color="#008080"> meta:resourcekey=</font><font color="#ff00ff">"lblWelcome"</font><font color="#008080"> ext=</font><font color="#ff00ff">"Welcome"</font><font color="#008080"> runat=</font><font color="#ff00ff">"server"</font><font color="#008080">&gt;</font><font color="#008080">&lt;/</font>asp<font color="#008080">:Label&gt;</font><br />
为了使其工作,我们需要在/App_LocalDirectory文件夹里创建该页面的资源文件.<br />
<br />
2.显式本地化 他能在我们拥有Global resource文件时工作 从资源文件读取的表达式如下:<br />
<font color="#008080">&lt;</font>sp<font color="#008080">:</font><font color="#2e8b57"><strong>Label</strong></font><font color="#008080"> </font><font color="#2e8b57"><strong>id</strong></font><font color="#008080">=</font><font color="#ff00ff">lblWelcome</font><font color="#008080"> </font><font color="#2e8b57"><strong>Text</strong></font><font color="#008080">=</font><font color="#ff00ff">"&lt;%$Resources:TestSiteResources,Welcome %&gt;"</font><font color="#008080"> runat=</font><font color="#ff00ff">"server"</font><font color="#008080">&gt;</font><font color="#008080">&lt;/</font>asp<font color="#008080">:Label&gt;</font><br />
<br />
3.用程序自动的获取强类型的资源文件类<br />
lblWelcome.Text = Resources.TestSiteResources.Welcome;<br />
<br />
整合本地化<br />
<br />
我们要设置UICulture属性以便asp.net可以访问相应的资源文件.<br />
<br />
如何能够在PostBack事件中改变语言区域呢?还好asp.net在Page类中提供了一个InitializeCulture()去重写.这个方法在页面的生命周期中很早的被执行,我们可以在这里设置当前线程的UICulture和Culture属性<br />
<br />
如果想在所有的页面实现更换语言,我们可以创建一个BasePage页面,让其他页面继承.<br />
<br />
但是InitializeCulture()事件执行的比初始化控件要早,如何获取控件的值呢?答案是用Form集合<br />
<br />
为了本地化还需设置页面编码<br />
<font color="#008080">&lt;</font>globalization<font color="#008080"> responseEncoding</font><font color="#ff00ff">"=utf-8"</font><font color="#008080">requestEncoding=</font><font color="#ff00ff">"utf-8"</font><font color="#008080"> fileEncoding=</font><font color="#ff00ff">"utf-8"</font><font color="#008080"> /&gt;</font><br />
<br />
定义语言阅读方向<br />
<br />
这是必须的因为有些语言的阅读顺序是从右到左的.我们可以设置dir属性达到目的.这个标记用在<font color="#008080">&lt;</font><font color="#804040"><strong>html</strong></font><font color="#008080">&gt;</font>或<font color="#008080">&lt;</font><font color="#804040"><strong>body</strong></font><font color="#008080">&gt;</font>中.属性值从资源文件中读取,RTL或LTR.<br />
<font color="#008080">&lt;</font><font color="#804040"><strong>body</strong></font><font color="#008080"> runat=</font><font color="#ff00ff">"server"</font><font color="#008080"> </font><font color="#2e8b57"><strong>dir</strong></font><font color="#008080">=</font><font color="#ff00ff">"&lt;%$ Resources: TestSiteResources, Direction %&gt;"</font><font color="#008080">&gt;</font><br />
<br />
用数据库实现本地化<br />
<br />
总结<br />
<br />
1.不要依赖浏览器的设置,给出一个切换语言的链接.<br />
<br />
2.用资源文件分离表示层的数据.如果找不到指定的资源文件,asp.net将使用默认的资源文件.<br />
<br />
3.当使用数据库表储存数据和内容时,你需要创建单独的表储存本地化内容.<br />
<br />
4.如果你用sn.exe创建强名称的主程序程序集,你需要用相同密钥对的私钥签名附属程序集(资源).强名称的程序集要求附属程序集也是强名称的. <br />
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code" style="width: 798px; height: 1727px"><img id="Code_Closed_Image_211348" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_211348').style.display='none'; document.getElementById('Code_Open_Image_211348').style.display='inline'; document.getElementById('Code_Open_Text_211348').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_211348" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_211348').style.display='none'; getElementById('Code_Closed_Image_211348').style.display='inline'; getElementById('Code_Closed_Text_211348').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_211348">Code</span><span id="Code_Open_Text_211348" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">***********Add&nbsp;By&nbsp;Victor&nbsp;Date&nbsp;25/08/2008&nbsp;Below**********************************</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">#region</span><span style="color: #000000">&nbsp;Culture&nbsp;Functions</span><span style="color: #000000"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #808080">&lt;SUMMARY&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">从通用的页面头部的下拉框列表中选择的语言名。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">我们需要使用这个名字，因为我们还没有任何其它控件属性－现在控件本身还没有被初始化。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">因此，我们使用"嵌套的"下拉框列表名，从中我们可以从Request.Form[]集合中得到该下拉框列表的值。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/SUMMARY&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;LanguageDropDownID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">ctl00$ddlLanguage</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;SUMMARY&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">在一个回寄表单中的PostBack事件目标域的名字。你可以使用<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">它来确定是哪个控件触发了PostBack：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;Request.Form[PostBackEventTarget]&nbsp;.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/SUMMARY&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;PostBackEventTarget&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">__EVENTTARGET</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;SUMMARY&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">重载InitializeCulture方法来设置在当前线程中用户选择的选项<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">。注意，这个方法在Page生命周期的早期调用<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">，并且目前我们不存在任何控件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">，因此必须使用Form集合.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/SUMMARY&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;InitializeCulture()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #808080">&lt;remarks&gt;&lt;REMARKS&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">检查是否PostBack发生.不能使用在此方法中使用IsPostBack<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">，因为这个属性还没有设置。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #808080">&lt;/remarks&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(Request[PostBackEventTarget]&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;controlID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Request[PostBackEventTarget];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(controlID.Equals(LanguageDropDownID))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;selectedValue&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Request.Form[Request[PostBackEventTarget]].ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">switch</span><span style="color: #000000">&nbsp;(selectedValue)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">en-us</span><span style="color: #800000">"</span><span style="color: #000000">:&nbsp;SetCulture(</span><span style="color: #800000">"</span><span style="color: #800000">en-US</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">en-US</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">zh-cn</span><span style="color: #800000">"</span><span style="color: #000000">:&nbsp;SetCulture(</span><span style="color: #800000">"</span><span style="color: #800000">zh-CN</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">zh-CN</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">zh-tw</span><span style="color: #800000">"</span><span style="color: #000000">:&nbsp;SetCulture(</span><span style="color: #800000">"</span><span style="color: #800000">zh-TW</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">zh-TW</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">default</span><span style="color: #000000">:&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #808080">&lt;remarks&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">从会话中取得文件，如果控制给导航到同一程序中的一个新页面。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #808080">&lt;/remarks&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(Session[</span><span style="color: #800000">"</span><span style="color: #800000">MyUICulture</span><span style="color: #800000">"</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;Session[</span><span style="color: #800000">"</span><span style="color: #800000">MyCulture</span><span style="color: #800000">"</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.CurrentThread.CurrentUICulture&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(CultureInfo)Session[</span><span style="color: #800000">"</span><span style="color: #800000">MyUICulture</span><span style="color: #800000">"</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.CurrentThread.CurrentCulture&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(CultureInfo)Session[</span><span style="color: #800000">"</span><span style="color: #800000">MyCulture</span><span style="color: #800000">"</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">base</span><span style="color: #000000">.InitializeCulture();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;Summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">使用参数设置当前的UICulture和CurrentCulture<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/Summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;PARAM&nbsp;name="name"&gt;&lt;/PARAM&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;PARAM&nbsp;name="locale"&gt;&lt;/PARAM&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;SetCulture(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;name,&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;locale)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.CurrentThread.CurrentUICulture&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CultureInfo.CreateSpecificCulture(name);</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;new&nbsp;CultureInfo(name);</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.CurrentThread.CurrentCulture&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CultureInfo.CreateSpecificCulture(locale);</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;new&nbsp;CultureInfo(locale);</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #808080">&lt;remarks&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">由用户把当前线程的文化集保存在会话中<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">，以便它能够在当前应用程序中跨页面应用。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #808080">&lt;/remarks&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session[</span><span style="color: #800000">"</span><span style="color: #800000">MyUICulture</span><span style="color: #800000">"</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Thread.CurrentThread.CurrentUICulture;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session[</span><span style="color: #800000">"</span><span style="color: #800000">MyCulture</span><span style="color: #800000">"</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Thread.CurrentThread.CurrentCulture;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session[</span><span style="color: #800000">"</span><span style="color: #800000">LGID</span><span style="color: #800000">"</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;StaticData.GetLanguageID(name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">#endregion</span><span style="color: #000000">&nbsp;Culture&nbsp;Functions</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">***********Add&nbsp;By&nbsp;Victor&nbsp;Date&nbsp;25/08/2008&nbsp;Above**********************************</span><span style="color: #008000">*/</span></span></div>
<p>&nbsp;</p>
<p><a href="http://www.cnblogs.com/think-jerry/archive/2007/05/16/748626.html">http://www.cnblogs.com/think-jerry/archive/2007/05/16/748626.html</a></p>
<img src ="http://www.cnblogs.com/iamv/aggbug/1276115.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42096/" target="_blank">[新闻]微软研究院发布 AutoCollage - 整理并融合照片</a>]]></description></item><item><title>[转]ICSharpCode.SharpZipLib 初级使用</title><link>http://www.cnblogs.com/iamv/archive/2008/07/31/1257157.html</link><dc:creator>IamV</dc:creator><author>IamV</author><pubDate>Thu, 31 Jul 2008 03:56:00 GMT</pubDate><guid>http://www.cnblogs.com/iamv/archive/2008/07/31/1257157.html</guid><wfw:comment>http://www.cnblogs.com/iamv/comments/1257157.html</wfw:comment><comments>http://www.cnblogs.com/iamv/archive/2008/07/31/1257157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/iamv/comments/commentRss/1257157.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/iamv/services/trackbacks/1257157.html</trackback:ping><description><![CDATA[<p><font size="5"><a style="font-size: 10pt" href="http://blog.csdn.net/vividboy/archive/2008/05/08/2418503.aspx">http://blog.csdn.net/vividboy/archive/2008/05/08/2418503.aspx</a></font></p>
<p><font size="5"></font>&nbsp;</p>
<p><font style="font-size: 12pt" size="5">最</font><font size="3">近做的一个项目需要使用到在线解压缩的过程。</font></p>
<p><font size="3">需求是这样的，用户可以将所有需要上传的文件进行打包然后上传到服务器，服务器将压缩包进行解压，然后对其中的文件进行逐个处理。</font></p>
<p><font size="3">其中将压缩包进行服务器端解压的过程就是通过ICSharpCode.SharpZipLib.dll来实现的。对于这个dll文件，可以通过搜索这个dll文件的名字下载到。</font></p>
<p><font size="3">原来没有使用过，所以拿来帮助文档依葫芦画瓢。</font></p>
<p><font size="3">1. 在项目中添加对ICSharpCode.SharpZipLib.dll的引用；</font></p>
<p><font size="3">2. 在需要使用到ICSharpCode.SharpZipLib中定义的类的编码界面中将其导入(Imports)</font></p>
<p><font size="3">(在C#中是using);</font></p>
<p><font size="3">3. 在选择命名空间的时候，你会发现在有这样几个同级的命名空间：</font></p>
<p><font size="3">ICSharpCode.SharpZipLib.<font color="#0000ff">BZip2</font>;</font></p>
<p><font size="3">ICSharpCode.SharpZipLib.<font color="#0000ff">GZip</font>;</font></p>
<p><font size="3">ICSharpCode.SharpZipLib.<font color="#0000ff">Tar</font>;</font></p>
<p><font size="3">ICSharpCode.SharpZipLib.<font color="#0000ff">Zip</font>。</font></p>
<p><font size="3">这四个命名空间就对应着四种文件压缩方式，其中我们用的较多的是Zip的压缩方式，因为通过WinRAR软件就可以将文件压缩成.Zip的压缩包。这里有两点需要说明一下：</font></p>
<p><font color="#0000ff" size="3">1) 目前还没有发现提供对.RAR方式压缩文件操作的方法；</font></p>
<p><font color="#0000ff" size="3">2) BZip2, GZip 这两种压缩算法仅仅针对一个文件的压缩，如果你的压缩包要包含许多文件，并需要将这些文件解压出来进行操作的话，最好选用Tar和Zip的压缩方式。</font></p>
<p><font size="3">关于这四种压缩算法的介绍可以从维基百科上得到，这里就不再赘述了。</font></p>
<p><font size="3">好了，下面看看在服务器端对Zip压缩文件进行<font color="#0000ff">解压缩</font>的过程，下面是其帮助文档中提供的例子。由于这里最需要注意的就是ZipInputStream类的使用，所以你可以通过在帮助文档中搜索ZipInputStream找到这个例子。</font></p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Text;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.IO;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;ICSharpCode.SharpZipLib.Zip;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MainClass<br />
<img id="_103_1115_Open_Image" onclick="this.style.display='none'; document.getElementById('_103_1115_Open_Text').style.display='none'; document.getElementById('_103_1115_Closed_Image').style.display='inline'; document.getElementById('_103_1115_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="_103_1115_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_103_1115_Closed_Text').style.display='none'; document.getElementById('_103_1115_Open_Image').style.display='inline'; document.getElementById('_103_1115_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="_103_1115_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_103_1115_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Main(</span><span style="color: #0000ff">string</span><span style="color: #000000">[]&nbsp;args)<br />
<img id="_152_1113_Open_Image" onclick="this.style.display='none'; document.getElementById('_152_1113_Open_Text').style.display='none'; document.getElementById('_152_1113_Closed_Image').style.display='inline'; document.getElementById('_152_1113_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="_152_1113_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_152_1113_Closed_Text').style.display='none'; document.getElementById('_152_1113_Open_Image').style.display='inline'; document.getElementById('_152_1113_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_152_1113_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_152_1113_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">这里通过File.OpenRead方法读取指定文件，并通过其返回的FileStream构造ZipInputStream对象；</span><span style="color: #008000"><br />
<img id="_305_1107_Open_Image" onclick="this.style.display='none'; document.getElementById('_305_1107_Open_Text').style.display='none'; document.getElementById('_305_1107_Closed_Image').style.display='inline'; document.getElementById('_305_1107_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="_305_1107_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_305_1107_Closed_Text').style.display='none'; document.getElementById('_305_1107_Open_Image').style.display='inline'; document.getElementById('_305_1107_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;(&nbsp;ZipInputStream&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ZipInputStream(File.OpenRead(args[</span><span style="color: #000000">0</span><span style="color: #000000">])))&nbsp;</span><span id="_305_1107_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_305_1107_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">每个包含在Zip压缩包中的文件都被看成是ZipEntry对象，并通过ZipInputStream的GetNextEntry方法<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">依次遍历所有包含在压缩包中的文件。</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZipEntry&nbsp;theEntry;<br />
<img id="_499_1097_Open_Image" onclick="this.style.display='none'; document.getElementById('_499_1097_Open_Text').style.display='none'; document.getElementById('_499_1097_Closed_Image').style.display='inline'; document.getElementById('_499_1097_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="_499_1097_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_499_1097_Closed_Text').style.display='none'; document.getElementById('_499_1097_Open_Image').style.display='inline'; document.getElementById('_499_1097_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;((theEntry&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;s.GetNextEntry())&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span id="_499_1097_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_499_1097_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;size&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2048</span><span style="color: #000000">;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;data&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[</span><span style="color: #000000">2048</span><span style="color: #000000">];<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">然后以文件数据块的方式将数据打印在控制台上；</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.Write(</span><span style="color: #000000">"</span><span style="color: #000000">Show&nbsp;contents&nbsp;(y/n)&nbsp;?</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="_724_1083_Open_Image" onclick="this.style.display='none'; document.getElementById('_724_1083_Open_Text').style.display='none'; document.getElementById('_724_1083_Closed_Image').style.display='inline'; document.getElementById('_724_1083_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="_724_1083_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_724_1083_Closed_Text').style.display='none'; document.getElementById('_724_1083_Open_Image').style.display='inline'; document.getElementById('_724_1083_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(Console.ReadLine()&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">y</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span id="_724_1083_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_724_1083_Open_Text"><span style="color: #000000">{<br />
<img id="_759_1065_Open_Image" onclick="this.style.display='none'; document.getElementById('_759_1065_Open_Text').style.display='none'; document.getElementById('_759_1065_Closed_Image').style.display='inline'; document.getElementById('_759_1065_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="_759_1065_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_759_1065_Closed_Text').style.display='none'; document.getElementById('_759_1065_Open_Image').style.display='inline'; document.getElementById('_759_1065_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">true</span><span style="color: #000000">)&nbsp;</span><span id="_759_1065_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_759_1065_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;s.Read(data,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;data.Length);<br />
<img id="_860_975_Open_Image" onclick="this.style.display='none'; document.getElementById('_860_975_Open_Text').style.display='none'; document.getElementById('_860_975_Closed_Image').style.display='inline'; document.getElementById('_860_975_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="_860_975_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_860_975_Closed_Text').style.display='none'; document.getElementById('_860_975_Open_Image').style.display='inline'; document.getElementById('_860_975_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(size&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span id="_860_975_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_860_975_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.Write(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ASCIIEncoding().GetString(data,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;size));<br />
<img id="_982_1043_Open_Image" onclick="this.style.display='none'; document.getElementById('_982_1043_Open_Text').style.display='none'; document.getElementById('_982_1043_Closed_Image').style.display='inline'; document.getElementById('_982_1043_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="_982_1043_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_982_1043_Closed_Text').style.display='none'; document.getElementById('_982_1043_Open_Image').style.display='inline'; document.getElementById('_982_1043_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="_982_1043_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_982_1043_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
</div>
<font size="3"></font>
<p><font size="3">这里需要注意的几个属性是：</font></p>
<p><font size="3">1.&nbsp; ZipEntry.Name, 可以得到包含在要所报文件中的文件名；</font></p>
<p><font size="3">2.&nbsp; ZipEntry.CompressedSize, 是指当前文件被压缩后的大小；</font></p>
<p><font size="3">3.&nbsp; ZipEntry.Size 是指当前文件原本大小。</font></p>
<p><font size="3">这两个大小(Size)需要指明清楚，否则可能在写入文件的时候会出现文件内容被截断的现象。</font></p>
<p>&nbsp;</p>
 <img src ="http://www.cnblogs.com/iamv/aggbug/1257157.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42100/" target="_blank">[新闻]2008年9月5日科技博客精选</a>]]></description></item><item><title>行列互转_整理贴[转]</title><link>http://www.cnblogs.com/iamv/archive/2008/06/24/1228668.html</link><dc:creator>IamV</dc:creator><author>IamV</author><pubDate>Tue, 24 Jun 2008 02:12:00 GMT</pubDate><guid>http://www.cnblogs.com/iamv/archive/2008/06/24/1228668.html</guid><wfw:comment>http://www.cnblogs.com/iamv/comments/1228668.html</wfw:comment><comments>http://www.cnblogs.com/iamv/archive/2008/06/24/1228668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/iamv/comments/commentRss/1228668.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/iamv/services/trackbacks/1228668.html</trackback:ping><description><![CDATA[摘要: --行列互转/******************************************************************************************************************************************************以学生成绩为例子，比较形象易懂整理人：中国风(Roy)日期:2008.06.06***&nbsp;&nbsp;<a href='http://www.cnblogs.com/iamv/archive/2008/06/24/1228668.html'>阅读全文</a><img src ="http://www.cnblogs.com/iamv/aggbug/1228668.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42099/" target="_blank">[新闻]SNS网站风靡影响工作效率 公司下令封杀</a>]]></description></item><item><title>不同服务器数据库之间的数据操作</title><link>http://www.cnblogs.com/iamv/archive/2008/06/24/1228653.html</link><dc:creator>IamV</dc:creator><author>IamV</author><pubDate>Tue, 24 Jun 2008 01:53:00 GMT</pubDate><guid>http://www.cnblogs.com/iamv/archive/2008/06/24/1228653.html</guid><wfw:comment>http://www.cnblogs.com/iamv/comments/1228653.html</wfw:comment><comments>http://www.cnblogs.com/iamv/archive/2008/06/24/1228653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/iamv/comments/commentRss/1228653.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/iamv/services/trackbacks/1228653.html</trackback:ping><description><![CDATA[<p><font face="Verdana">--不同服务器数据库之间的数据操作</font></p>
<p><font face="Verdana">--创建链接服务器 <br />
exec sp_addlinkedserver 'ITSV','','SQLOLEDB','172.28.3.11' <br />
exec sp_addlinkedsrvlogin 'ITSV','false',null,'用户名','密码' </font></p>
<p><font face="Verdana">--查询示例 <br />
select * from ITSV.PMS_DEV.dbo.TXN_Stay </font></p>
<p><font face="Verdana">--导入示例 <br />
select * into 表 from ITSV.数据库名.dbo.表名 </font></p>
<p><font face="Verdana">--以后不再使用时删除链接服务器 <br />
exec sp_dropserver&nbsp; 'ITSV', 'droplogins' </font></p>
<p><font face="Verdana">----------------------------------------------------------<br />
--连接远程/局域网数据(openrowset/openquery/opendatasource) <br />
--1.openrowset </font></p>
<p><font face="Verdana">--查询示例 <br />
select * from openrowset( 'SQLOLEDB', '172.28.3.11'; '用户名'; '密码',PMS_DEV.dbo.TXN_Stay) </font></p>
<p><font face="Verdana">--生成本地表 <br />
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) </font></p>
<p><font face="Verdana">--把本地表导入远程表 <br />
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) <br />
select *from 本地表 </font></p>
<p><font face="Verdana">--更新本地表 <br />
update b <br />
set b.列A=a.列A <br />
&nbsp;from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b <br />
on a.column1=b.column1 </font></p>
<p><font face="Verdana">--2.openquery用法需要创建一个连接 </font></p>
<p><font face="Verdana">--首先创建一个连接创建链接服务器 <br />
exec sp_addlinkedserver&nbsp;&nbsp; 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' </font></p>
<p><font face="Verdana">--查询 <br />
select * <br />
FROM openquery(ITSV,&nbsp; 'SELECT *&nbsp; FROM 数据库.dbo.表名 ') </font></p>
<p><font face="Verdana">--把本地表导入远程表 <br />
insert openquery(ITSV,&nbsp; 'SELECT *&nbsp; FROM 数据库.dbo.表名 ') <br />
select * from 本地表 </font></p>
<p><font face="Verdana">--更新本地表 <br />
update b <br />
set b.列B=a.列B <br />
FROM openquery(ITSV,&nbsp; 'SELECT * FROM 数据库.dbo.表名 ') as a&nbsp; <br />
inner join 本地表 b on a.列A=b.列A </font></p>
<p><font face="Verdana">--3.opendatasource/openrowset <br />
SELECT&nbsp;&nbsp; * <br />
FROM&nbsp;&nbsp; opendatasource( 'SQLOLEDB ',&nbsp; 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta <br />
--把本地表导入远程表 <br />
insert opendatasource( 'SQLOLEDB ',&nbsp; 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 <br />
select * from<br />
<br />
From:CSDN <font face="Verdana">http://topic.csdn.net/u/20080523/11/08e4624a-13d1-4a6c-a9bc-7cfdd721a351.html<br />
<br />
----------------------------------------------------------------------------------------<br />
----------------------------------------------------------------------------------------<br />
<br />
<span style="color: #008080">--</span><span style="color: #008080">遠程連接操作</span><span style="color: #008080"><br />
/*</span><span style="color: #008080">*****************************************************************************************************************************************************<br />
Tab表:<br />
/*<br />
ID 自增列&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name<br />
----------- ---------<br />
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a<br />
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b<br />
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c<br />
</span><span style="color: #008080">*/</span><span style="color: #000000"><br />
存儲過程:<br />
</span><span style="color: #008080">/*</span><span style="color: #008080"><br />
create proc P<br />
as<br />
select top 10 ID,Name from sysobjects<br />
</span><span style="color: #008080">*/</span><span style="color: #000000"><br />
<br />
整理人：中國風(Roy)<br />
<br />
日期:</span><span style="font-weight: bold; color: #800000">2008.06</span><span style="color: #000000">.</span><span style="font-weight: bold; color: #800000">06</span><span style="color: #000000"><br />
</span><span style="color: #808080">******************************************************************************************************************************************************/</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">遠程鏈接服務器機器名:Roy;實例名:Roy\SQL2005DE;登陸名:sa;密碼:Test2005;</span><span style="color: #008080"><br />
</span><span style="color: #000000"><br />
</span><span style="color: #008080">--</span><span style="color: #008080">創建鏈接服務器</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">EXEC</span><span style="color: #000000"> master.dbo.sp_addlinkedserver </span><span style="color: #008000">@server</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> N</span><span style="color: #ff0000">'</span><span style="color: #ff0000">ROY_LNK</span><span style="color: #ff0000">'</span><span style="color: #000000">, </span><span style="color: #008000">@srvproduct</span><span style="color: #808080">=</span><span style="color: #000000">N</span><span style="color: #ff0000">'</span><span style="color: #ff0000">ROY_LNK</span><span style="color: #ff0000">'</span><span style="color: #000000">, </span><span style="color: #008000">@provider</span><span style="color: #808080">=</span><span style="color: #000000">N</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">, </span><span style="color: #008000">@datasrc</span><span style="color: #808080">=</span><span style="color: #000000">N</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Roy\SQL2005DE</span><span style="color: #ff0000">'</span><span style="color: #008080">--</span><span style="color: #008080">SQL05可用SQLNCLI\SQLOLEDB</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">GO</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">EXEC</span><span style="color: #000000"> master.dbo.sp_addlinkedsrvlogin </span><span style="color: #008000">@rmtsrvname</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> N</span><span style="color: #ff0000">'</span><span style="color: #ff0000">ROY_LNK</span><span style="color: #ff0000">'</span><span style="color: #000000">, </span><span style="color: #008000">@locallogin</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> </span><span style="color: #0000ff">NULL</span><span style="color: #000000"> , </span><span style="color: #008000">@useself</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> N</span><span style="color: #ff0000">'</span><span style="color: #ff0000">False</span><span style="color: #ff0000">'</span><span style="color: #000000">, </span><span style="color: #008000">@rmtuser</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> N</span><span style="color: #ff0000">'</span><span style="color: #ff0000">sa</span><span style="color: #ff0000">'</span><span style="color: #000000">, </span><span style="color: #008000">@rmtpassword</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> N</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">GO</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">刪除鏈接服務器</span><span style="color: #008080"><br />
--</span><span style="color: #008080">exec sp_dropserver 'roy_lnk','droplogins'</span><span style="color: #008080"><br />
</span><span style="color: #000000"><br />
</span><span style="color: #008080">--</span><span style="color: #008080">Select</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">select</span><span style="color: #000000"> </span><span style="color: #808080">*</span><span style="color: #000000"> </span><span style="color: #0000ff">from</span><span style="color: #000000"> roy_lnk.test.dbo.Tab<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">insert</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">insert</span><span style="color: #000000"> roy_lnk.test.dbo.Tab(Name)</span><span style="color: #008080">--</span><span style="color: #008080">指定列</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">Values</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">d</span><span style="color: #ff0000">'</span><span style="color: #000000">)<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">update</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">update</span><span style="color: #000000"> roy_lnk.test.dbo.Tab </span><span style="color: #0000ff">set</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">DD</span><span style="color: #ff0000">'</span><span style="color: #000000"> </span><span style="color: #0000ff">where</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">d</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">delete </span><span style="color: #008080"><br />
</span><span style="color: #0000ff">delete</span><span style="color: #000000"> roy_lnk.test.dbo.Tab </span><span style="color: #0000ff">where</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">DD</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
<br />
用openrowset:<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">支持存儲過程</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">select</span><span style="color: #000000"> </span><span style="color: #808080">*</span><span style="color: #0000ff">from</span><span style="color: #000000"> </span><span style="color: #ff00ff">openrowset</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Roy\SQL2005DE</span><span style="color: #ff0000">'</span><span style="color: #000000">;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">sa</span><span style="color: #ff0000">'</span><span style="color: #000000">;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">test.dbo.p</span><span style="color: #ff0000">'</span><span style="color: #000000">)a<br />
<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">select </span><span style="color: #008080"><br />
</span><span style="color: #0000ff">select</span><span style="color: #000000"> </span><span style="color: #808080">*</span><span style="color: #0000ff">from</span><span style="color: #000000"> </span><span style="color: #ff00ff">openrowset</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Roy\SQL2005DE</span><span style="color: #ff0000">'</span><span style="color: #000000">;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">sa</span><span style="color: #ff0000">'</span><span style="color: #000000">;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000">,test.dbo.Tab)a<br />
<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">insert</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">insert</span><span style="color: #000000"> </span><span style="color: #ff00ff">openrowset</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Roy\SQL2005DE</span><span style="color: #ff0000">'</span><span style="color: #000000">;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">sa</span><span style="color: #ff0000">'</span><span style="color: #000000">;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000">,test.dbo.Tab)(Name)</span><span style="color: #0000ff">values</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">EE</span><span style="color: #ff0000">'</span><span style="color: #000000">)<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">update </span><span style="color: #008080"><br />
</span><span style="color: #0000ff">update</span><span style="color: #000000"> </span><span style="color: #ff00ff">openrowset</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Roy\SQL2005DE</span><span style="color: #ff0000">'</span><span style="color: #000000">;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">sa</span><span style="color: #ff0000">'</span><span style="color: #000000">;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000">,test.dbo.Tab) </span><span style="color: #0000ff">set</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">EEE</span><span style="color: #ff0000">'</span><span style="color: #000000"> </span><span style="color: #0000ff">where</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #000000">N</span><span style="color: #ff0000">'</span><span style="color: #ff0000">EE</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">delete</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">delete</span><span style="color: #000000"> </span><span style="color: #ff00ff">openrowset</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Roy\SQL2005DE</span><span style="color: #ff0000">'</span><span style="color: #000000">;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">sa</span><span style="color: #ff0000">'</span><span style="color: #000000">;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000">,test.dbo.Tab) </span><span style="color: #0000ff">where</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #000000">N</span><span style="color: #ff0000">'</span><span style="color: #ff0000">EEE</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
<br />
<br />
用openquery:</span><span style="color: #008080">--</span><span style="color: #008080">支持存儲過程</span><span style="color: #008080"><br />
</span><span style="color: #000000"><br />
</span><span style="color: #008080">--</span><span style="color: #008080">支持存儲過程</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">select</span><span style="color: #000000"> </span><span style="color: #808080">*</span><span style="color: #000000">&nbsp; </span><span style="color: #0000ff">from</span><span style="color: #000000"> </span><span style="color: #ff00ff">openquery</span><span style="color: #000000">(roy_lnk, </span><span style="color: #ff0000">'</span><span style="color: #ff0000">test.dbo.P</span><span style="color: #ff0000">'</span><span style="color: #000000">)<br />
<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">select</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">SELECT</span><span style="color: #000000"> </span><span style="color: #808080">*</span><span style="color: #000000"> </span><span style="color: #0000ff">FROM</span><span style="color: #000000"> </span><span style="color: #ff00ff">openquery</span><span style="color: #000000">(roy_lnk, </span><span style="color: #ff0000">'</span><span style="color: #ff0000">SELECT * FROM test.dbo.tab</span><span style="color: #ff0000">'</span><span style="color: #000000">) <br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">insert</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">insert</span><span style="color: #000000"> </span><span style="color: #ff00ff">openquery</span><span style="color: #000000">(roy_lnk, </span><span style="color: #ff0000">'</span><span style="color: #ff0000">SELECT * FROM test.dbo.tab</span><span style="color: #ff0000">'</span><span style="color: #000000">) (Name) </span><span style="color: #0000ff">values</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">F</span><span style="color: #ff0000">'</span><span style="color: #000000">)<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">update </span><span style="color: #008080"><br />
</span><span style="color: #0000ff">update</span><span style="color: #000000"> </span><span style="color: #ff00ff">openquery</span><span style="color: #000000">(roy_lnk, </span><span style="color: #ff0000">'</span><span style="color: #ff0000">SELECT * FROM test.dbo.tab</span><span style="color: #ff0000">'</span><span style="color: #000000">) </span><span style="color: #0000ff">set</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">FF</span><span style="color: #ff0000">'</span><span style="color: #000000"> </span><span style="color: #0000ff">where</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">F</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">delete不支持是根據 OLE DB 提供者的功能而定</span><span style="color: #008080"><br />
--</span><span style="color: #008080">delete openquery(roy_lnk, 'SELECT * FROM test.dbo.tab')&nbsp; where Name='FF' </span><span style="color: #008080"><br />
</span><span style="color: #000000"><br />
<br />
<br />
用OPENDATASOURCE:<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">支持存儲過程</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">select</span><span style="color: #000000"> </span><span style="color: #808080">*</span><span style="color: #000000">&nbsp; </span><span style="color: #0000ff">from</span><span style="color: #000000"> </span><span style="color: #0000ff">OPENDATASOURCE</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Data Source=Roy\SQL2005DE;User ID=sa;Password=Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000">).</span><span style="color: #ff0000">'</span><span style="color: #ff0000">test.dbo.p</span><span style="color: #ff0000">'</span><span style="color: #000000"> <br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">select</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">select</span><span style="color: #000000"> </span><span style="color: #808080">*</span><span style="color: #000000">&nbsp; </span><span style="color: #0000ff">from</span><span style="color: #000000"> </span><span style="color: #0000ff">OPENDATASOURCE</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Data Source=Roy\SQL2005DE;User ID=sa;Password=Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000">).test.dbo.tab <br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">insert</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">insert</span><span style="color: #000000"> </span><span style="color: #0000ff">OPENDATASOURCE</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Data Source=Roy\SQL2005DE;User ID=sa;Password=Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000">).test.dbo.tab(Name) </span><span style="color: #0000ff">values</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">H</span><span style="color: #ff0000">'</span><span style="color: #000000">)<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">update</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">update</span><span style="color: #000000"> </span><span style="color: #0000ff">OPENDATASOURCE</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Data Source=Roy\SQL2005DE;User ID=sa;Password=Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000">).test.dbo.tab </span><span style="color: #0000ff">set</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">HH</span><span style="color: #ff0000">'</span><span style="color: #000000"> </span><span style="color: #0000ff">where</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">H</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">delete </span><span style="color: #008080"><br />
</span><span style="color: #0000ff">delete</span><span style="color: #000000"> </span><span style="color: #0000ff">OPENDATASOURCE</span><span style="color: #000000">(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SQLOLEDB</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Data Source=Roy\SQL2005DE;User ID=sa;Password=Test2005</span><span style="color: #ff0000">'</span><span style="color: #000000">).test.dbo.tab </span><span style="color: #0000ff">where</span><span style="color: #000000"> Name</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">HH</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">與本機表數據對比時用別名</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">select</span><span style="color: #000000"> </span><span style="color: #808080">*</span><span style="color: #000000"> </span><span style="color: #0000ff">from</span><span style="color: #000000"> roy_lnk.test.dbo.Tab a </span><span style="color: #808080">join</span><span style="color: #000000"> tab b </span><span style="color: #0000ff">on</span><span style="color: #000000"> a.ID</span><span style="color: #808080">=</span><span style="color: #000000">b.ID</span><br />
<br />
From: CSND <font face="Verdana">http://topic.csdn.net/u/20080612/22/bb2dfa83-1cf3-4a0b-9bd4-5a39e6193556.html</font></font></font></p>
<img src ="http://www.cnblogs.com/iamv/aggbug/1228653.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42099/" target="_blank">[新闻]SNS网站风靡影响工作效率 公司下令封杀</a>]]></description></item><item><title>Some Test</title><link>http://www.cnblogs.com/iamv/archive/2008/06/18/1224524.html</link><dc:creator>IamV</dc:creator><author>IamV</author><pubDate>Wed, 18 Jun 2008 03:54:00 GMT</pubDate><guid>http://www.cnblogs.com/iamv/archive/2008/06/18/1224524.html</guid><wfw:comment>http://www.cnblogs.com/iamv/comments/1224524.html</wfw:comment><comments>http://www.cnblogs.com/iamv/archive/2008/06/18/1224524.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/iamv/comments/commentRss/1224524.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/iamv/services/trackbacks/1224524.html</trackback:ping><description><![CDATA[<p><font face="Verdana">----------------------------------------------------------------------------<br />
-------------------------------启用CLR集成----------------------------------<br />
----在你开始用C#写存储过程之前，必须要启用你的SQL Server的CLR集成特性,默认情况它是不启用的.<br />
----打开你的SQL Server Management Studio并执行如下脚本</font></p>
<p><font face="Verdana">EXECUTE sp_configure 'clr enabled'&nbsp;&nbsp; -------查看状态--------</font></p>
<p><font face="Verdana">EXECUTE sp_configure 'clr enabled',1&nbsp;&nbsp; -------两个参数：1-启用clr，0-禁用clr------</font></p>
<p><font face="Verdana">----这里，我们执行了系统存储过程&#8220;sp_configure&#8221;，为其提供的两个参数分别为：&#8220;clr enabled&#8221;和&#8220;1&#8221;.<br />
----如果要停用CLR集成的话也是执行这个存储过程，只不过第二个参数要变为&#8220;0&#8221;而已.<br />
----"Configuration option 'clr enabled' changed from 1 to 1. Run the RECONFIGURE statement to install."<br />
---按提示(配置选项 'clr enabled' 已从 0 更改为 1.请运行 RECONFIGURE 语句进行安装。)<br />
----另外，为了使新的设置产生效果，不要忘记调用&#8220;RECONFIGURE&#8221;.运行此句</font></p>
<p><font face="Verdana">RECONFIGURE<br />
----------------------------------------------------------------------------<br />
<br />
</p>
<p><font face="Verdana">-----------------------------------------------------------------------------------<br />
-----------------------------------------------------------------------------------<br />
-----------------------------------------------------------------------------------</font></p>
<p><font face="Verdana">IF OBJECT_ID('Test_UserList','U') is not null<br />
drop table [Test_UserList]<br />
GO<br />
CREATE TABLE [dbo].[Test_UserList] (<br />
[TUL_ID] BIGINT IDENTITY(1,1) NOT NULL,<br />
[TUL_NAME] nvarchar(50) NULL,<br />
[TUL_Desc] nvarchar(200) NULL,<br />
[TUL_level] BIGINT NULL,<br />
[TUL_BoosID] [int] NULL<br />
) ON [PRIMARY]</font></p>
<font face="Verdana">
<p><font face="Verdana">USE [MyTest]<br />
GO<br />
/****** Object:&nbsp; StoredProcedure [dbo].[UserList_INSERT]&nbsp;&nbsp;&nbsp; Script Date: 06/17/2008 10:56:49 ******/<br />
SET ANSI_NULLS ON<br />
GO<br />
SET QUOTED_IDENTIFIER ON<br />
GO</font></p>
<p><font face="Verdana">ALTER PROCEDURE [dbo].[UserList_INSERT]<br />
(<br />
&nbsp;@NAME NVARCHAR(50),<br />
&nbsp;@DESC NVARCHAR(50),<br />
&nbsp;@BOOSID BIGINT<br />
)<br />
AS<br />
SET NOCOUNT ON;</font></p>
<p><font face="Verdana">DECLARE @LEVEL BIGINT;<br />
DECLARE @TranCounter INT;<br />
SET @TranCounter = @@TRANCOUNT;</font></p>
<font face="Verdana">
<p><br />
&nbsp;SELECT @LEVEL=[TUL_level]+1 FROM [Test_UserList] WHERE [TUL_ID]=@BOOSID</p>
<p><br />
IF @LEVEL=0 OR @LEVEL IS NULL<br />
BEGIN<br />
&nbsp;SET @LEVEL=1;<br />
&nbsp;SET @BOOSID=0;<br />
END</p>
<p>&nbsp;--BEGIN TRANSACTION<br />
&nbsp;IF @TranCounter = 0<br />
&nbsp;&nbsp;BEGIN TRANSACTION;</p>
<p>&nbsp;--Verify Foreign Keys<br />
&nbsp;--Insert Data<br />
&nbsp;DECLARE @ErrCode INT;</p>
<p><br />
&nbsp;INSERT INTO [Test_UserList] <br />
&nbsp;(<br />
&nbsp;&nbsp;[TUL_NAME],<br />
&nbsp;&nbsp;[TUL_Desc],<br />
&nbsp;&nbsp;[TUL_level],<br />
&nbsp;&nbsp;[TUL_BoosID]<br />
&nbsp;)<br />
&nbsp;values<br />
&nbsp;(<br />
&nbsp;&nbsp;@NAME,<br />
&nbsp;&nbsp;@DESC,<br />
&nbsp;&nbsp;@LEVEL,<br />
&nbsp;&nbsp;@BOOSID<br />
&nbsp;)</p>
<p>&nbsp;SET @ErrCode = @@ERROR;</p>
<p>&nbsp;IF @ErrCode = 0<br />
&nbsp;&nbsp;BEGIN<br />
&nbsp;&nbsp;--COMMIT TRANSACTION<br />
&nbsp;&nbsp;IF @TranCounter = 0<br />
&nbsp;&nbsp;&nbsp;IF (XACT_STATE()) = 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;COMMIT TRANSACTION<br />
&nbsp;&nbsp;END<br />
&nbsp;--ROLLBACK TRANSACTION<br />
&nbsp;IF @TranCounter = 0<br />
&nbsp;&nbsp;IF (XACT_STATE()) &lt;&gt; 0<br />
&nbsp;&nbsp;&nbsp;ROLLBACK TRANSACTION</font></p>
<p>-------------------------------------------------------------------<br />
<br />
<br />
dbo.UserList_INSERT 'gyf','rrrr',0;</p>
<p>select * from Test_UserList</p>
<p><br />
WITH IamV AS(<br />
SELECT [TUL_ID],[TUL_NAME],[TUL_Desc],[TUL_level],[TUL_BoosID] <br />
FROM Test_UserList(NOLOCK) <br />
WHERE [TUL_BoosID]=3<br />
UNION ALL<br />
SELECT a.[TUL_ID],a.[TUL_NAME],a.[TUL_Desc],a.[TUL_level],a.[TUL_BoosID] <br />
FROM IamV z<br />
INNER JOIN Test_UserList a on z.[TUL_ID]=a.[TUL_BoosID]<br />
)<br />
SELECT * from IamV <br />
------------------------------------------------------------------<br />
------------------------------------------------------------------<br />
------------------------------------------------------------------<br />
</p>
<p><font face="Verdana">/*</font></p>
<p><font face="Verdana">OBJECT_ID()：返回数据库对象标识号。N是显式的将非unicode字符转成unicode字符，它来自 SQL-92 标准中的 National（Unicode）数据类型，用于扩展和标准化，在这里可以不用，写作object_id(PerPersonData)。</font></p>
<p><font face="Verdana">OBJECTPROPERTY()：返回当前数据库中对象的有关信息.BOOL 1表&#8220;真&#8221;。同样可以写成OBJECTPROPERTY(id,IsUserTable) = 1。</font></p>
<font face="Verdana">
<p><br />
整条语句的意思是判断数据库里有没有存在PerPersonData这样一张表。</p>
<p>*/</font></p>
<br />
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">--CTE是Common Table Expression的简写，翻译成中文就是通用表表达式，它可以在select，insert或者update中使用。 <br />
--为了说明问题，我们先随便建张表，插入几条数据：<br />
--知识点：WITH AS, ROW_NUMBER(),OVER(),object_id()<br />
--这是2005提供的一个新功能，叫CTE（公用表表达式） <br />
--其实他就是一个临时视图，因此使用的时候必须 <br />
--1 前一个语句必须以分号结尾 <br />
--2 本质上，CTE是一个临时结果集，它仅仅存在于它发生的语句中。 <br />
--&nbsp; 因此当你第二次调用他的时候必须再次声明一个CTE,这样这个CTE才存在与这个语句中 <br />
--<br />
--与派生表不同，CTE能够引用自己本身。如果您不必存储视图，您可以用一个CTE来代替它。 <br />
--在一个语句中，您还可以多次引用CTE。应用CTE，您可以通过一个派生栏对结果进行分组。 <br />
--用CTE来实现递归是他的最大特点</font></p>
<p><font face="Verdana">if object_id('t','U') is not null --用object_id函数判断表是否在数据库中存在很简洁<br />
drop table t;<br />
GO<br />
create table t(c1 int,c2 decimal,c3 int);<br />
GO<br />
INSERT INTO t <br />
SELECT c1 = 1,c2 = 5.0,c3=10<br />
UNION<br />
SELECT c1 = 2,c2 = 5.5,c3=10<br />
UNION<br />
SELECT c1 = 3,c2 = 5.0,c3=20<br />
UNION<br />
SELECT c1 = 4,c2 = 5.5,c3=20<br />
--下面我们使用CTE写一个分页的sql语句<br />
GO<br />
WITH t_cn AS<br />
(&nbsp;&nbsp;&nbsp; <br />
select c1,c2,c3,rn = ROW_NUMBER() <br />
OVER(ORDER BY c1 DESC) <br />
FROM t WHERE 0 = 0 --可以在此处添加一些条件<br />
)<br />
SELECT c1,c2,c3,rn FROM t_cn WHERE rn between 2 and 5<br />
SELECT totalCn = COUNT(*) FROM t WHERE 0 = 0</font></p>
<font face="Verdana">
<p><br />
&nbsp;<br />
PRINT CONVERT(NVARCHAR(50),GETDATE(),13);</p>
<p>WITH aab(t,b) AS<br />
(<br />
&nbsp;SELECT 1, CONVERT(NVARCHAR(50),GETDATE(),13)<br />
&nbsp;UNION ALL<br />
&nbsp;SELECT t+1, CONVERT(NVARCHAR(50),GETDATE(),13) FROM aab<br />
&nbsp;WHERE t &lt; 20000<br />
)<br />
SELECT * FROM aab <br />
--UNION ALL<br />
--SELECT * FROM aab<br />
&nbsp;OPTION (MAXRECURSION 32767)<br />
&nbsp;</p>
<p>PRINT CONVERT(NVARCHAR(50),GETDATE(),13)</p>
<p><br />
-----------------------------------------------------------<br />
-----------------------------------------------------------</p>
<p><br />
WITH ctedt(dt) AS<br />
(<br />
&nbsp;SELECT 1<br />
&nbsp;UNION ALL<br />
&nbsp;SELECT dt + 1 FROM ctedt<br />
&nbsp;WHERE dt &lt; 1000<br />
),<br />
cteds(ds) AS<br />
(<br />
&nbsp;SELECT 1000<br />
&nbsp;UNION ALL<br />
&nbsp;SELECT ds - 1 FROM cteds<br />
&nbsp;WHERE ds &gt;1<br />
)<br />
SELECT ctedt.dt,<br />
cteds.ds <br />
FROM cteds<br />
INNER JOIN ctedt ON ds=dt<br />
&nbsp;OPTION (MAXRECURSION 32767)</p>
<p><br />
</font>&nbsp;</p>
----------------------------------------------------------------------------------------------------<br />
----------------------------------------------------------------------------------------------------<br />
----------------------------------------------------------------------------------------------------<br />
----------------------------------------------------------------------------------------------------<br />
----------------------------------------------------------------------------------------------------<br />
----------------------------------------------------------------------------------------------------<br />
----------------------------------------------------------------------------------------------------<br />
----------------------------------------------------------------------------------------------------<br />
<p><font face="Verdana">&nbsp;</p>
<p><font face="Verdana">/*<br />
DBCC DROPCLEANBUFFERS<br />
DBCC FREEPROCCACHE<br />
*/<br />
SET STATISTICS IO ON<br />
SET STATISTICS TIME ON</font></p>
<p><font face="Verdana">&nbsp;SELECT TOP 10 * <br />
&nbsp;FROM UserTraces AS ut1<br />
&nbsp;WHERE ActionID&lt;&gt;2 <br />
&nbsp; AND NOT EXISTS(<br />
&nbsp;&nbsp; SELECT 1<br />
&nbsp;&nbsp; FROM UserTraces<br />
&nbsp;&nbsp; WHERE ExtensionID1=ut1.ExtensionID1 AND ActionID&lt;&gt;2 AND CreateDate&gt;ut1.CreateDate <br />
&nbsp;&nbsp; )<br />
&nbsp;ORDER BY CreateDate DESC</font></p>
<p><font face="Verdana">&nbsp;SELECT TOP 10 *<br />
&nbsp; FROM UserTraces AS t1<br />
&nbsp;&nbsp; Where EXISTS<br />
&nbsp;&nbsp; (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM UserTraces AS t2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE ActionID&lt;&gt;2 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY ExtensionID1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HAVING ExtensionID1 = t1.ExtensionID1 <br />
&nbsp;&nbsp;&nbsp; and max(CreateDate) = t1.CreateDate<br />
&nbsp;&nbsp; )<br />
&nbsp;&nbsp; ORDER BY CreateDate DESC</font></p>
<p><font face="Verdana">SET STATISTICS TIME OFF<br />
SET STATISTICS IO OFF</font></p>
<p><font face="Verdana"><br />
select top 2 * from A order by newid() <br />
&nbsp;&nbsp;&nbsp; <br />
SELECT NEWID()<br />
<br />
<br />
----------------------------------------------------------------------------------------------------<br />
----------------------------------------------------------------------------------------------------<br />
<font face="Verdana"></p>
<p><br />
----------------------------------------------------------------------------------------<br />
--1.请问MDF和LDF文件如何还原为数据库实例?&nbsp; </p>
<p>-- 附加数据库就可以完成.&nbsp;&nbsp;&nbsp; <br />
--&nbsp; 附加数据库:&nbsp;&nbsp;&nbsp;&nbsp; <br />
--&nbsp;&nbsp;&nbsp; 企业管理器&nbsp;&nbsp; <br />
--&nbsp; --右键"数据库"&nbsp;&nbsp; <br />
--&nbsp; --所有任务&nbsp;&nbsp; <br />
--&nbsp; --附加数据库&nbsp;&nbsp; <br />
--&nbsp; --选择你的.mdf文件名&nbsp;&nbsp; <br />
--&nbsp; --确定&nbsp;&nbsp; <br />
--&nbsp; --如果提示没有.ldf文件,是否创建,选择"是"&nbsp;&nbsp; <br />
&nbsp;<br />
--&nbsp; 查询分析器中的方法:&nbsp;&nbsp; <br />
--&nbsp; --有数据文件及日志文件的情况&nbsp;&nbsp; <br />
--&nbsp; sp_attach_db&nbsp;&nbsp; '数据库名'&nbsp;&nbsp; <br />
--&nbsp; ,'数据文件名(*.mdf注意要带目录)'&nbsp;&nbsp; --后面可以是用,分隔的该数据库的多个数据文件&nbsp;&nbsp; <br />
--&nbsp; ,'日志文件名(*.ldf注意要带目录)'--后面可以是用,分隔的该数据库的多个日志文件&nbsp;&nbsp; <br />
--&nbsp;&nbsp;&nbsp; <br />
--&nbsp; --如果只有数据文件的情况&nbsp;&nbsp; <br />
--&nbsp; sp_attach_single_file_db&nbsp;&nbsp; '数据库名'&nbsp;&nbsp; <br />
--&nbsp; ,'数据文件名(*.mdf注意要带目录)'&nbsp;&nbsp; --后面可以是用,分隔的该数据库的多个数据文件&nbsp;&nbsp; <br />
--&nbsp;&nbsp;&nbsp; </p>
<p><br />
--EXEC sp_attach_db @dbname= N'ShopData',<br />
--&nbsp;&nbsp;@filename1=N'E:\IamV\ShopStiteSQLDataBase\ShopData_Data.MDF',<br />
--&nbsp;&nbsp;@filename2=N'E:\IamV\ShopStiteSQLDataBase\ShopData_Log.LDF'<br />
--------------------------------------------------------------------------------------</p>
<p>--------------------------------------------------------------</p>
<p>begin transaction</p>
<p>commit transaction</p>
<p>rollback transaction</p>
<p>select @@TRANCOUNT</p>
<p>select XACT_STATE()<br />
----------------------------------------------------------------</font></p>
<p><br />
<br />
</font>&nbsp;</p>
</font></font></font>
<img src ="http://www.cnblogs.com/iamv/aggbug/1224524.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42098/" target="_blank">[新闻]《孢子》正式发布</a>]]></description></item><item><title>收藏Javascript中常用的55个经典技巧</title><link>http://www.cnblogs.com/iamv/archive/2008/05/30/1210861.html</link><dc:creator>IamV</dc:creator><author>IamV</author><pubDate>Fri, 30 May 2008 09:31:00 GMT</pubDate><guid>http://www.cnblogs.com/iamv/archive/2008/05/30/1210861.html</guid><wfw:comment>http://www.cnblogs.com/iamv/comments/1210861.html</wfw:comment><comments>http://www.cnblogs.com/iamv/archive/2008/05/30/1210861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/iamv/comments/commentRss/1210861.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/iamv/services/trackbacks/1210861.html</trackback:ping><description><![CDATA[<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">1. 屏蔽鼠标右键<br />
oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <br />
&lt;table border oncontextmenu=return(false)&gt;&lt;td&gt;no&lt;/table&gt; 可用于Table </font></p>
<p><font face="Verdana">2. 取消选取、防止复制<br />
&lt;body onselectstart="return false"&gt; </font></p>
<p><font face="Verdana">3. 不准粘贴 <br />
onpaste="return false" </font></p>
<p><font face="Verdana">4. 防止复制 <br />
oncopy="return false;" oncut="return false;" </font></p>
<p><font face="Verdana">5. IE地址栏前换成自己的图标<br />
&lt;link rel="Shortcut Icon" href="favicon.ico"&gt;&nbsp; </font></p>
<p><font face="Verdana">6. 可以在收藏夹中显示出你的图标<br />
&lt;link rel="Bookmark" href="favicon.ico"&gt; </font></p>
<p><font face="Verdana">7. 关闭输入法<br />
&lt;input style="ime-mode:disabled"&gt;</font></p>
<p><font face="Verdana">8. 永远都会带着框架 <br />
&lt;script language="JavaScript"&gt;&lt;!-- <br />
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页 <br />
// --&gt;&lt;/script&gt;</font></p>
<p><font face="Verdana">9. 防止被人frame <br />
&lt;