<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_软件开发博客</title><subtitle type="text">Welcome to My Blog</subtitle><id>http://feed.cnblogs.com/blog/u/48457/rss</id><updated>2011-01-12T06:41:34Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/48457/rss"/><entry><id>http://www.cnblogs.com/lindayyh/archive/2011/01/12/1933876.html</id><title type="text">时间函数:当前日期时间\当前时间\几年前的年(月)</title><summary type="text">时间函数:当前日期时间\当前时间\几年前的年(月)--当前日期时间select GETDATE()--当前时间Select CONVERT(varchar(20), GETDATE(), 8)--当前日期select CONVERT(varchar(10), getdate(), 120)--几年(月)SELECT DATEPART(M,DATEADD(M,-1,GETDATE()))SELECT DATEPART(Year,DATEADD(YEAR,-1,GETDATE())) --前五年SELECT DATEPART(Year,DATEADD(YEAR,0,GETDATE())) as 当</summary><published>2011-01-12T06:37:00Z</published><updated>2011-01-12T06:37:00Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lindayyh/archive/2011/01/12/1933876.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/archive/2011/01/12/1933876.html"/><content type="html">&lt;p&gt;&lt;strong&gt;时间函数:当前日期时间\当前时间\几年前的年(月)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;--当前日期时间&lt;br /&gt;select GETDATE()&lt;/p&gt;&lt;p&gt;--当前时间&lt;br /&gt;Select CONVERT(varchar(20), GETDATE(), 8)&lt;/p&gt;&lt;p&gt;--当前日期&lt;br /&gt;select CONVERT(varchar(10), getdate(), 120)&lt;/p&gt;&lt;p&gt;&amp;nbsp;--几年(月)&lt;br /&gt;SELECT DATEPART(M,DATEADD(M,-1,GETDATE()))&lt;br /&gt;SELECT DATEPART(Year,DATEADD(YEAR,-1,GETDATE())) &lt;/p&gt;&lt;p&gt;--前五年&lt;/p&gt;&lt;p&gt;&amp;nbsp;SELECT DATEPART(Year,DATEADD(YEAR,0,GETDATE())) as 当前年&lt;br /&gt;,DATEPART(Year,DATEADD(YEAR,-1,GETDATE())) as 前一年&lt;br /&gt;,DATEPART(Year,DATEADD(YEAR,-2,GETDATE())) as 前二年&lt;br /&gt;,DATEPART(Year,DATEADD(YEAR,-3,GETDATE())) as 前三年&lt;br /&gt;,DATEPART(Year,DATEADD(YEAR,-4,GETDATE())) as 前四年&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lindayyh/aggbug/1933876.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lindayyh/archive/2011/01/12/1933876.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lindayyh/archive/2010/09/30/1839621.html</id><title type="text">C# 反射入门知识</title><summary type="text">C# 反射入门知识1、 什么是反射2、 命名空间与装配件的关系3、 运行期得到类型信息有什么用4、 如何使用反射获取类型5、 如何根据类型来动态创建对象6、 如何获取方法以及动态调用方法7、 动态创建委托1、什么是反射 Reflection，中文翻译为反射。 这是.Net中获取运行时类型信息的方式，.Net的应用程序由几个部分：‘程序集(Assembly)’、‘...</summary><published>2010-09-30T09:09:00Z</published><updated>2010-09-30T09:09:00Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lindayyh/archive/2010/09/30/1839621.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/archive/2010/09/30/1839621.html"/><content type="html">&lt;table style="border-collapse: collapse; word-wrap: break-word" border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td height="25" align="center"&gt;&lt;font style="font-size: 14pt" color="#02368d"&gt;&lt;strong&gt;C# 反射入门知识&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#d2dee2" height="1"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#ffffff" height="1"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;table style="border-collapse: collapse; word-wrap: break-word" border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;&lt;div style="margin: 15px" id="art" width="100%"&gt;&lt;div&gt;&lt;p align="left"&gt;&lt;span class="Code"&gt;&lt;font color="#000000"&gt;1、 什么是反射&lt;br /&gt;2、 命名空间与装配件的关系&lt;br /&gt;3、 运行期得到类型信息有什么用&lt;br /&gt;4、 如何使用反射获取类型&lt;br /&gt;5、 如何根据类型来动态创建对象&lt;br /&gt;6、 如何获取方法以及动态调用方法&lt;br /&gt;7、 动态创建委托&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;1、什么是反射&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reflection，中文翻译为反射。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这是.Net中获取运行时类型信息的方式，.Net的应用程序由几个部分：&amp;#8216;程序集(Assembly)&amp;#8217;、&amp;#8216;模块(Module)&amp;#8217;、&amp;#8216;类型(class)&amp;#8217;组成，而反射提供一种编程的方式，让程序员可以在程序运行期获得这几个组成部分的相关信息，例如：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Assembly类可以获得正在运行的装配件信息，也可以动态的加载装配件，以及在装配件中查找类型信息，并创建该类型的实例。&lt;br /&gt;Type类可以获得对象的类型信息，此信息包含对象的所有要素：方法、构造器、属性等等，通过Type类可以得到这些要素的信息，并且调用之。&lt;br /&gt;MethodInfo包含方法的信息，通过这个类可以得到方法的名称、参数、返回值等，并且可以调用之。&lt;br /&gt;诸如此类，还有FieldInfo、EventInfo等等，这些类都包含在System.Reflection命名空间下。&lt;/p&gt;&lt;p&gt;2、命名空间与装配件的关系&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 很多人对这个概念可能还是很不清晰，对于合格的.Net程序员，有必要对这点进行澄清。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 命名空间类似与Java的包，但又不完全等同，因为Java的包必须按照目录结构来放置，命名空间则不需要。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 装配件是.Net应用程序执行的最小单位，编译出来的.dll、.exe都是装配件。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 装配件和命名空间的关系不是一一对应，也不互相包含，一个装配件里面可以有多个命名空间，一个命名空间也可以在多个装配件中存在，这样说可能有点模糊，举个例子：&lt;br /&gt;装配件A：&lt;br /&gt;namespace&amp;nbsp;&amp;nbsp; N1&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; AC1&amp;nbsp;&amp;nbsp; {&amp;#8230;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; AC2&amp;nbsp;&amp;nbsp; {&amp;#8230;}&lt;br /&gt;}&lt;br /&gt;namespace&amp;nbsp;&amp;nbsp; N2&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; AC3&amp;nbsp;&amp;nbsp; {&amp;#8230;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; AC4{&amp;#8230;}&lt;br /&gt;}&lt;br /&gt;装配件B：&lt;br /&gt;namespace&amp;nbsp;&amp;nbsp; N1&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; BC1&amp;nbsp;&amp;nbsp; {&amp;#8230;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; BC2&amp;nbsp;&amp;nbsp; {&amp;#8230;}&lt;br /&gt;}&lt;br /&gt;namespace&amp;nbsp;&amp;nbsp; N2&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; BC3&amp;nbsp;&amp;nbsp; {&amp;#8230;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; BC4{&amp;#8230;}&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这两个装配件中都有N1和N2两个命名空间，而且各声明了两个类，这样是完全可以的，然后我们在一个应用程序中引用装配件A，那么在这个应用程序中，我们能看到N1下面的类为AC1和AC2，N2下面的类为AC3和AC4。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 接着我们去掉对A的引用，加上对B的引用，那么我们在这个应用程序下能看到的N1下面的类变成了BC1和BC2，N2下面也一样。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果我们同时引用这两个装配件，那么N1下面我们就能看到四个类：AC1、AC2、BC1和BC2。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 到这里，我们可以清楚一个概念了，命名空间只是说明一个类型是那个族的，比如有人是汉族、有人是回族；而装配件表明一个类型住在哪里，比如有人住在北京、有人住在上海；那么北京有汉族人，也有回族人，上海有汉族人，也有回族人，这是不矛盾的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 上面我们说了，装配件是一个类型居住的地方，那么在一个程序中要使用一个类，就必须告诉编译器这个类住在哪儿，编译器才能找到它，也就是说必须引用该装配件。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 那么如果在编写程序的时候，也许不确定这个类在哪里，仅仅只是知道它的名称，就不能使用了吗？答案是可以，这就是反射了，就是在程序运行的时候提供该类型的地址，而去找到它。&lt;br /&gt;有兴趣的话，接着往下看吧。&lt;/p&gt;&lt;p&gt;3、运行期得到类型信息有什么用&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有人也许疑问，既然在开发时就能够写好代码，干嘛还放到运行期去做，不光繁琐，而且效率也受影响。&lt;br /&gt;这就是个见仁见智的问题了，就跟早绑定和晚绑定一样，应用到不同的场合。有的人反对晚绑定，理由是损耗效率，但是很多人在享受虚函数带来的好处的时侯还没有意识到他已经用上了晚绑定。这个问题说开去，不是三言两语能讲清楚的，所以就点到为止了。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我的看法是，晚绑定能够带来很多设计上的便利，合适的使用能够大大提高程序的复用性和灵活性，但是任何东西都有两面性，使用的时侯，需要再三衡量。&lt;/p&gt;&lt;p&gt;接着说，运行期得到类型信息到底有什么用呢？&lt;br /&gt;还是举个例子来说明，很多软件开发者喜欢在自己的软件中留下一些接口，其他人可以编写一些插件来扩充软件的功能，比如我有一个媒体播放器，我希望以后可以很方便的扩展识别的格式，那么我声明一个接口：&lt;br /&gt;public&amp;nbsp;&amp;nbsp; interface&amp;nbsp;&amp;nbsp; IMediaFormat&lt;br /&gt;{&lt;br /&gt;string&amp;nbsp;&amp;nbsp; Extension&amp;nbsp;&amp;nbsp; {get;}&lt;br /&gt;Decoder&amp;nbsp;&amp;nbsp; GetDecoder();&lt;br /&gt;}&lt;br /&gt;这个接口中包含一个Extension属性，这个属性返回支持的扩展名，另一个方法返回一个解码器的对象（这里我假设了一个Decoder的类，这个类提供把文件流解码的功能，扩展插件可以派生之），通过解码器对象我就可以解释文件流。&lt;br /&gt;那么我规定所有的解码插件都必须派生一个解码器，并且实现这个接口，在GetDecoder方法中返回解码器对象，并且将其类型的名称配置到我的配置文件里面。&lt;br /&gt;这样的话，我就不需要在开发播放器的时侯知道将来扩展的格式的类型，只需要从配置文件中获取现在所有解码器的类型名称，而动态的创建媒体格式的对象，将其转换为IMediaFormat接口来使用。&lt;/p&gt;&lt;p&gt;这就是一个反射的典型应用。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;4、如何使用反射获取类型&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先我们来看如何获得类型信息。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 获得类型信息有两种方法，一种是得到实例对象&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个时侯我仅仅是得到这个实例对象，得到的方式也许是一个object的引用，也许是一个接口的引用，但是我并不知道它的确切类型，我需要了解，那么就可以通过调用System.Object上声明的方法GetType来获取实例对象的类型对象，比如在某个方法内，我需要判断传递进来的参数是否实现了某个接口，如果实现了，则调用该接口的一个方法：&lt;br /&gt;&amp;#8230;&lt;br /&gt;public&amp;nbsp;&amp;nbsp; void&amp;nbsp;&amp;nbsp; Process(&amp;nbsp;&amp;nbsp; object&amp;nbsp;&amp;nbsp; processObj&amp;nbsp;&amp;nbsp; )&lt;br /&gt;{&lt;br /&gt;Type&amp;nbsp;&amp;nbsp; t&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; processsObj.GetType();&lt;br /&gt;if(&amp;nbsp;&amp;nbsp; t.GetInterface(&amp;#8220;ITest&amp;#8221;)&amp;nbsp;&amp;nbsp; !=null&amp;nbsp;&amp;nbsp; )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8230;&lt;br /&gt;}&lt;br /&gt;&amp;#8230;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 另外一种获取类型的方法是通过Type.GetType以及Assembly.GetType方法，如：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type&amp;nbsp;&amp;nbsp; t&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; Type.GetType(&amp;#8220;System.String&amp;#8221;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 需要注意的是，前面我们讲到了命名空间和装配件的关系，要查找一个类，必须指定它所在的装配件，或者在已经获得的Assembly实例上面调用GetType。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 本装配件中类型可以只写类型名称，另一个例外是mscorlib.dll，这个装配件中声明的类型也可以省略装配件名称（.Net装配件编译的时候，默认都引用了mscorlib.dll，除非在编译的时候明确指定不引用它），比如：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String是在mscorlib.dll中声明的，上面的Type&amp;nbsp;&amp;nbsp; t&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; Type.GetType(&amp;#8220;System.String&amp;#8221;)是正确的&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Data.DataTable是在System.Data.dll中声明的，那么：&lt;br /&gt;Type.GetType(&amp;#8220;System.Data.DataTable&amp;#8221;)就只能得到空引用。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 必须：&lt;br /&gt;Type&amp;nbsp;&amp;nbsp; t&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0,&amp;nbsp;&amp;nbsp; Culture=neutral,&amp;nbsp;&amp;nbsp; PublicKeyToken=b77a5c561934e089");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这样才可以，大家可以看下面这个帖子：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://expert.csdn.net/Expert/topic/2210/2210762.xml?temp=.1919977"&gt;&lt;font color="#0000ff"&gt;http://expert.csdn.net/Expert/topic/2210/2210762.xml?temp=.1919977&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; qqchen的回答很精彩&lt;/p&gt;&lt;p&gt;&lt;br /&gt;5、如何根据类型来动态创建对象&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Activator提供了方法来根据类型动态创建对象，比如创建一个DataTable：&lt;/p&gt;&lt;p&gt;Type&amp;nbsp;&amp;nbsp; t&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0,&amp;nbsp;&amp;nbsp; Culture=neutral,&amp;nbsp;&amp;nbsp; PublicKeyToken=b77a5c561934e089");&lt;/p&gt;&lt;p&gt;DataTable&amp;nbsp;&amp;nbsp; table&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; (DataTable)Activator.CreateInstance(t);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 例二：根据有参数的构造器创建对象&lt;br /&gt;namespace&amp;nbsp;&amp;nbsp; TestSpace&amp;nbsp; &lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; TestClass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&amp;nbsp;&amp;nbsp; string&amp;nbsp;&amp;nbsp; _value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; TestClass(string&amp;nbsp;&amp;nbsp; value)&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _value=value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;#8230;&lt;br /&gt;Type&amp;nbsp;&amp;nbsp; t&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; Type.GetType(&amp;#8220;TestSpace.TestClass&amp;#8221;);&lt;br /&gt;Object[]&amp;nbsp;&amp;nbsp; constructParms&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; new&amp;nbsp;&amp;nbsp; object[]&amp;nbsp;&amp;nbsp; {&amp;#8220;hello&amp;#8221;};&amp;nbsp;&amp;nbsp; //构造器参数&lt;br /&gt;TestClass&amp;nbsp;&amp;nbsp; obj&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; (TestClass)Activator.CreateInstance(t,constructParms);&lt;br /&gt;&amp;#8230;&lt;br /&gt;把参数按照顺序放入一个Object数组中即可&lt;/p&gt;&lt;p&gt;&lt;br /&gt;6、如何获取方法以及动态调用方法&lt;br /&gt;namespace&amp;nbsp;&amp;nbsp; TestSpace&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; TestClass&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&amp;nbsp;&amp;nbsp; string&amp;nbsp;&amp;nbsp; _value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; TestClass()&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; TestClass(string&amp;nbsp;&amp;nbsp; value)&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _value&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; string&amp;nbsp;&amp;nbsp; GetValue(&amp;nbsp;&amp;nbsp; string&amp;nbsp;&amp;nbsp; prefix&amp;nbsp;&amp;nbsp; )&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(&amp;nbsp;&amp;nbsp; _value==null&amp;nbsp;&amp;nbsp; )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp;&amp;nbsp; "NULL";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp;&amp;nbsp; prefix+"&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; "+_value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; string&amp;nbsp;&amp;nbsp; Value&amp;nbsp;&amp;nbsp; {&lt;br /&gt;set&amp;nbsp;&amp;nbsp; {&lt;br /&gt;_value=value;&lt;br /&gt;}&lt;br /&gt;get&amp;nbsp;&amp;nbsp; {&lt;br /&gt;if(&amp;nbsp;&amp;nbsp; _value==null&amp;nbsp;&amp;nbsp; )&lt;br /&gt;return&amp;nbsp;&amp;nbsp; "NULL";&lt;br /&gt;else&lt;br /&gt;return&amp;nbsp;&amp;nbsp; _value;&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 上面是一个简单的类，包含一个有参数的构造器，一个GetValue的方法，一个Value属性，我们可以通过方法的名称来得到方法并且调用之，如：&lt;/p&gt;&lt;p&gt;//获取类型信息&lt;br /&gt;Type&amp;nbsp;&amp;nbsp; t&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; Type.GetType("TestSpace.TestClass");&lt;br /&gt;//构造器的参数&lt;br /&gt;object[]&amp;nbsp;&amp;nbsp; constuctParms&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; new&amp;nbsp;&amp;nbsp; object[]{"timmy"};&lt;br /&gt;//根据类型创建对象&lt;br /&gt;object&amp;nbsp;&amp;nbsp; dObj&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; Activator.CreateInstance(t,constuctParms);&lt;br /&gt;//获取方法的信息&lt;br /&gt;MethodInfo&amp;nbsp;&amp;nbsp; method&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; t.GetMethod("GetValue");&lt;br /&gt;//调用方法的一些标志位，这里的含义是Public并且是实例方法，这也是默认的值&lt;br /&gt;BindingFlags&amp;nbsp;&amp;nbsp; flag&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; BindingFlags.Public&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; BindingFlags.Instance;&lt;br /&gt;//GetValue方法的参数&lt;br /&gt;object[]&amp;nbsp;&amp;nbsp; parameters&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; new&amp;nbsp;&amp;nbsp; object[]{"Hello"};&lt;br /&gt;//调用方法，用一个object接收返回值&lt;br /&gt;object&amp;nbsp;&amp;nbsp; returnValue&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; method.Invoke(dObj,flag,Type.DefaultBinder,parameters,null);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 属性与方法的调用大同小异，大家也可以参考MSDN&lt;/p&gt;&lt;p&gt;7、动态创建委托&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 委托是C#中实现事件的基础，有时候不可避免的要动态的创建委托，实际上委托也是一种类型：System.Delegate，所有的委托都是从这个类派生的&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Delegate提供了一些静态方法来动态创建一个委托，比如一个委托：&lt;/p&gt;&lt;p&gt;namespace&amp;nbsp;&amp;nbsp; TestSpace&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate&amp;nbsp;&amp;nbsp; string&amp;nbsp;&amp;nbsp; TestDelegate(string&amp;nbsp;&amp;nbsp; value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class&amp;nbsp;&amp;nbsp; TestClass&amp;nbsp;&amp;nbsp; {&lt;br /&gt;public&amp;nbsp;&amp;nbsp; TestClass()&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; void&amp;nbsp;&amp;nbsp; GetValue(string&amp;nbsp;&amp;nbsp; value)&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp;&amp;nbsp; value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;使用示例：&lt;br /&gt;TestClass&amp;nbsp;&amp;nbsp; obj&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; new&amp;nbsp;&amp;nbsp; TestClass();&lt;/p&gt;&lt;p&gt;//获取类型，实际上这里也可以直接用typeof来获取类型&lt;br /&gt;Type&amp;nbsp;&amp;nbsp; t&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; Type.GetType(&amp;#8220;TestSpace.TestClass&amp;#8221;);&lt;br /&gt;//创建代理，传入类型、创建代理的对象以及方法名称&lt;br /&gt;TestDelegate&amp;nbsp;&amp;nbsp; method&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; (TestDelegate)Delegate.CreateDelegate(t,obj,&amp;#8221;GetValue&amp;#8221;);&lt;/p&gt;&lt;p&gt;String&amp;nbsp;&amp;nbsp; returnValue&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; method(&amp;#8220;hello&amp;#8221;);&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.cnblogs.com/lindayyh/aggbug/1839621.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lindayyh/archive/2010/09/30/1839621.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lindayyh/archive/2010/08/04/1792321.html</id><title type="text">sqlserver日志文件太大解决方法&amp;lt;转&amp;gt;</title><summary type="text">SQL Server 的事务日志意外增大或充满的处理方法 事务日志文件Transaction Log File是用来记录数据库更新情况的文件，扩展名为ldf。在 SQL Server 7.0 和 SQL Server 2000 中，如果设置了自动增长功能，事务日志文件将会自动扩展。一般情况下，在能够容纳两次事务日志截断之间发生的最大数量的事务时，事务日志的大小是稳定的，事务日志截断由检查点或者事务...</summary><published>2010-08-04T08:18:00Z</published><updated>2010-08-04T08:18:00Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lindayyh/archive/2010/08/04/1792321.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/archive/2010/08/04/1792321.html"/><content type="html">&lt;div class="blog_content"&gt;&lt;p&gt;&lt;span&gt;SQL Server 的事务日志意外增大或充满的处理方法 &lt;/span&gt;&lt;/p&gt;&lt;p&gt;事务日志文件Transaction Log File是用来记录数据库更新情况的文件，扩展名为ldf。&lt;br /&gt;在 SQL Server 7.0 和 SQL Server 2000 中，如果设置了自动增长功能，事务日志文件将会自动扩展。&lt;br /&gt;一般情况下，在能够容纳两次事务日志截断之间发生的最大数量的事务时，事务日志的大小是稳定的，事务日志截断由检查点或者事务日志备份触发。&lt;br /&gt;然而，在某些情况下，事务日志可能会变得非常大，以致用尽空间或变满。通常，在事务日志文件占尽可用磁盘空间且不能再扩展时，您将收到如下错误消息：&lt;br /&gt;Error:9002, Severity:17, State:2&lt;br /&gt;The log file for database '%.*ls' is full.&lt;br /&gt;除了出现此错误消息之外，SQL Server 还可能因为缺少事务日志扩展空间而将数据库标记为 SUSPECT。有关如何从此情形中恢复的其他信息，请参见 SQL Server 联机帮助中的&amp;#8220;磁盘空间不足&amp;#8221;主题。&lt;/p&gt;&lt;p&gt;另外，事务日志扩展可能导致下列情形：&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 非常大的事务日志文件。&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 事务可能会失败并可能开始回滚。&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 事务可能会用很长时间才能完成。&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 可能发生性能问题。&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 可能发生阻塞现象。&lt;/p&gt;&lt;p&gt;原因&lt;br /&gt;事务日志扩展可能由于以下原因或情形而发生：&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 未提交的事务&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 非常大的事务&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 操作：DBCC DBREINDEX 和 CREATE INDEX&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 在从事务日志备份还原时&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 客户端应用程序不处理所有结果&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 查询在事务日志完成扩展之前超时，您收到假的&amp;#8220;Log Full&amp;#8221;错误消息&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;#183; 未复制的事务&lt;/p&gt;&lt;p&gt;解决方法&lt;br /&gt;日志文件满而造成SQL数据库无法写入文件时，可用两种方法：&lt;br /&gt;一种方法：清空日志。&lt;br /&gt;1．打开查询分析器，输入命令&lt;br /&gt;DUMP TRANSACTION 数据库名 WITH NO_LOG&lt;br /&gt;2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。&lt;/p&gt;&lt;p&gt;另一种方法有一定的风险性，因为SQL SERVER的日志文件不是即时写入数据库主文件的，如处理不当，会造成数据的损失。&lt;br /&gt;1: 删除LOG&lt;br /&gt;分离数据库 企业管理器－＞服务器－＞数据库－＞右键－＞分离数据库&lt;br /&gt;2：删除LOG文件&lt;br /&gt;附加数据库 企业管理器－＞服务器－＞数据库－＞右键－＞附加数据库&lt;br /&gt;此法生成新的LOG，大小只有500多K。&lt;/p&gt;&lt;p&gt;注意：建议使用第一种方法。&lt;/p&gt;&lt;p&gt;如果以后,不想要它变大。&lt;br /&gt;SQL2000下使用：&lt;br /&gt;在数据库上点右键-&amp;gt;属性-&amp;gt;选项-&amp;gt;故障恢复-模型-选择-简单模型。&lt;br /&gt;或用SQL语句：&lt;br /&gt;alter database 数据库名 set recovery simple&lt;/p&gt;&lt;p&gt;&lt;br /&gt;另外，如上图中数据库属性有两个选项，与事务日志的增长有关：&lt;br /&gt;Truncate log on checkpoint&lt;br /&gt;(此选项用于SQL7.0，SQL 2000中即故障恢复模型选择为简单模型)&lt;br /&gt;当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True&lt;br /&gt;Auto shrink&lt;br /&gt;定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时，系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;注意：一般立成建立的数据库默认属性已设好，但碰到意外情况使数据库属性被更改，请用户清空日志后，检查数据库的以上属性，以防事务日志再次充满。&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lindayyh/aggbug/1792321.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lindayyh/archive/2010/08/04/1792321.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lindayyh/archive/2010/08/03/1791351.html</id><title type="text">如何清除Sqlserver数据库日志</title><summary type="text">启用SqlServer客户端工具“Sql查询分析器”,选择"Sql Server身份认证"，输入服务器地址、数据库登录名及密码，最后在命令框内输入： dump transaction 数据库名 with no_log 最后点击右键，选择执行即可</summary><published>2010-08-03T08:12:00Z</published><updated>2010-08-03T08:12:00Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lindayyh/archive/2010/08/03/1791351.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/archive/2010/08/03/1791351.html"/><content type="html">启用SqlServer客户端工具&amp;#8220;Sql查询分析器&amp;#8221;,选择"Sql Server身份认证"，输入服务器地址、数据库登录名及密码，最后在命令框内输入： &lt;p&gt;&lt;br /&gt;dump transaction 数据库名 with no_log&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最后点击右键，选择执行即可&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lindayyh/aggbug/1791351.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lindayyh/archive/2010/08/03/1791351.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lindayyh/archive/2010/05/18/1738625.html</id><title type="text">软考资料——考试真题和模拟试题</title><summary type="text">软考资料——考试真题和模拟试题fsmkjsfdl 发表于 2010-01-21 14:17 | | 星期四(Thursday) 晴 2009年下半年软考考试真题及答案讨论 http://www.educity.cn/user/xch/from.asp?id=235&amp;wh=20100118 2009下半年软考真题及答案讨论 2009年下半年信息系...</summary><published>2010-05-18T13:05:00Z</published><updated>2010-05-18T13:05:00Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lindayyh/archive/2010/05/18/1738625.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/archive/2010/05/18/1738625.html"/><content type="text">软考资料——考试真题和模拟试题fsmkjsfdl 发表于 2010-01-21 14:17 | | 星期四(Thursday) 晴 2009年下半年软考考试真题及答案讨论 http://www.educity.cn/user/xch/from.asp?id=235&amp;wh=20100118 2009下半年软考真题及答案讨论 2009年下半年信息系...</content></entry><entry><id>http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731219.html</id><title type="text">flex 3 + .net开发flash Remoting四 --- 完整代码及Demo下载</title><summary type="text">flex 3 + .net开发flash Remoting四 --- 完整代码及Demo下载一. 相关说明：本篇将呈现完整的Flash Remoting访问远程服务器，包括以可视化组件方式和以编程方式访问远程服务器。Asp.net服务器端和Flex客户端完整代码下载。二. 相关代码预览： 1.frServices.as，以编程方式访问远程服务器。packagecom.demo.fr{importf...</summary><published>2010-05-09T09:37:00Z</published><updated>2010-05-09T09:37:00Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731219.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731219.html"/><content type="text">flex 3 + .net开发flash Remoting四 --- 完整代码及Demo下载一. 相关说明：本篇将呈现完整的Flash Remoting访问远程服务器，包括以可视化组件方式和以编程方式访问远程服务器。Asp.net服务器端和Flex客户端完整代码下载。二. 相关代码预览： 1.frServices.as，以编程方式访问远程服务器。packagecom.demo.fr{importf...</content></entry><entry><id>http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731215.html</id><title type="text">flex 3 + .net开发flash Remoting二 --- 功能定义</title><summary type="text">flex 3 + .net开发flash Remoting二 --- 功能定义一. 介绍：本示例将向读者展示3个基本的功能：DisplayHellow、SayHellowWorld和GetUsers。二. 功能描述。1.DisplayHellow本方法返回一个字符串。2.SayHellowWorld本方法接受一个参数，并返回相关字符串。3.GetUsers本方法返回一个自定义对象(User)。三....</summary><published>2010-05-09T09:35:00Z</published><updated>2010-05-09T09:35:00Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731215.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731215.html"/><content type="text">flex 3 + .net开发flash Remoting二 --- 功能定义一. 介绍：本示例将向读者展示3个基本的功能：DisplayHellow、SayHellowWorld和GetUsers。二. 功能描述。1.DisplayHellow本方法返回一个字符串。2.SayHellowWorld本方法接受一个参数，并返回相关字符串。3.GetUsers本方法返回一个自定义对象(User)。三....</content></entry><entry><id>http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731216.html</id><title type="text">flex 3 + .net开发flash Remoting三 --- Flex编程</title><summary type="text">flex 3 + .net开发flash Remoting三 --- Flex编程一. 相关说明。1.声明。在研究flash Remoting的时候，参考了很多相关方面的资料，其中包括博客园里很多网友的大作(比较全面的有“幸福★星”的Flex与Asp.Net通过Remoting 方式进行通讯系列文章)，如在本篇中有雷同或类似的代码，请大家多多包涵。2. 永远的H...</summary><published>2010-05-09T09:35:00Z</published><updated>2010-05-09T09:35:00Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731216.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731216.html"/><content type="text">flex 3 + .net开发flash Remoting三 --- Flex编程一. 相关说明。1.声明。在研究flash Remoting的时候，参考了很多相关方面的资料，其中包括博客园里很多网友的大作(比较全面的有“幸福★星”的Flex与Asp.Net通过Remoting 方式进行通讯系列文章)，如在本篇中有雷同或类似的代码，请大家多多包涵。2. 永远的H...</content></entry><entry><id>http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731214.html</id><title type="text">flex 3 + .net开发flash Remoting一 --- 开发环境</title><summary type="text">flex 3 + .net开发flash Remoting一 --- 开发环境本篇文章将介绍flash Remoting 开发的必备的运行环境和相关配置过程：一。开发必备环境。1. flex 3，请从Adobe官方网站下载或其它地方找D版(目前为止D版还没有出)。2. Visual Studio 2005，.net 2.o。3. fluorinefx(flash(flex) Remoting 与 ...</summary><published>2010-05-09T09:33:00Z</published><updated>2010-05-09T09:33:00Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731214.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/archive/2010/05/09/1731214.html"/><content type="text">flex 3 + .net开发flash Remoting一 --- 开发环境本篇文章将介绍flash Remoting 开发的必备的运行环境和相关配置过程：一。开发必备环境。1. flex 3，请从Adobe官方网站下载或其它地方找D版(目前为止D版还没有出)。2. Visual Studio 2005，.net 2.o。3. fluorinefx(flash(flex) Remoting 与 ...</content></entry><entry><id>http://www.cnblogs.com/lindayyh/archive/2010/04/07/1706044.html</id><title type="text">c# winform 程序打包部署</title><summary type="text">c# winform 程序打包部署1 新建一个 c# 安装部署项目2 在文件系统编辑器里把做好的项目的可执行文件及要用到的其它文件(相关dll及资源文件)添加进来(应用程序文件夹)3 如果要在程序菜单中加快捷方式,可以在应用程序文件夹里把项目的可执行文件 生成一个快捷方式,再剪切到 用户的程序菜单 栏里同时可以把名称改成你要的名称4 如果要加进卸载功能 vs 2003 下 ,在应用程序文件夹里添加...</summary><published>2010-04-07T02:35:00Z</published><updated>2010-04-07T02:35:00Z</updated><author><name>杨子宜</name><uri>http://www.cnblogs.com/lindayyh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lindayyh/archive/2010/04/07/1706044.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lindayyh/archive/2010/04/07/1706044.html"/><content type="text">c# winform 程序打包部署1 新建一个 c# 安装部署项目2 在文件系统编辑器里把做好的项目的可执行文件及要用到的其它文件(相关dll及资源文件)添加进来(应用程序文件夹)3 如果要在程序菜单中加快捷方式,可以在应用程序文件夹里把项目的可执行文件 生成一个快捷方式,再剪切到 用户的程序菜单 栏里同时可以把名称改成你要的名称4 如果要加进卸载功能 vs 2003 下 ,在应用程序文件夹里添加...</content></entry></feed>
