<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_龙的天空</title><subtitle type="text">天将降大任于斯人也，必先苦其心志，劳其筋骨，饿其体肤，空乏其身，行拂乱其所为，所以动心忍性，曾益其所不能。</subtitle><id>http://feed.cnblogs.com/blog/u/31197/rss</id><updated>2011-09-20T05:53:57Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/31197/rss"/><entry><id>http://www.cnblogs.com/longer/archive/2011/01/22/1941899.html</id><title type="text">C#中处理SQL Server中的空的DateTime型字段</title><summary type="text">SQL Server中的DateTime型字段，如果为空值，则在C#中获取到后是不能直接转换为DateTime型变量的。当然也不能用是否等于null进行判断，应该使用是否等于DBNull.Value进行判断。对于使用实体类的情况，可以将指定的属性设为允许为空的形式，及类似public DateTime? LastLoginDate的方式定义。这样在处理时，我们只在结果集中对应的日期字段不等于DBNull.Value时为LastLoginDate属性赋值。在使用DateTime?型变量的时候，使用其HasValue属性进行判断处理。例如：</summary><published>2011-01-22T03:33:00Z</published><updated>2011-01-22T03:33:00Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/longer/archive/2011/01/22/1941899.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/archive/2011/01/22/1941899.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQL Server中的DateTime型字段，如果为空值，则在C#中获取到后是不能直接转换为DateTime型变量的。当然也不能用是否等于&lt;span style="color: #ff0000;"&gt;null&lt;/span&gt;进行判断，应该使用是否等于&lt;span style="color: #ff0000;"&gt;DBNull.Value&lt;/span&gt;进行判断。对于使用实体类的情况，可以将指定的属性设为允许为空的形式，及类似&lt;span style="color: #ff0000;"&gt;public DateTime?&amp;nbsp; LastLoginDate&lt;/span&gt;的方式定义。&lt;span style="color: #000000;"&gt;这样在处理时，我们只在结果集中对应的日期字段不等于DBNull.Value时为LastLoginDate属性赋值。在使用DateTime?型变量的时候，使用其HasValue属性进行判断处理。例如：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;//此例中user为实体类对象&lt;br/&gt;if(user.LastLoginDate.HasValue)&lt;br/&gt;{&lt;br/&gt;     lblInfo.Text = user.LastLoginDate.Value.ToString("yyyy-MM-dd");&lt;br/&gt;}&lt;br/&gt;else&lt;br/&gt;{&lt;br/&gt;     lblInfo.Text = "从未登录过！";&lt;br/&gt;}&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/longer/aggbug/1941899.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/longer/archive/2011/01/22/1941899.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/longer/archive/2010/10/01/1840694.html</id><title type="text">推荐一个不错的国外html5模板网站</title><summary type="text">http://blog.templatemonster.com/该网站有好多新的html5模板，强烈推荐一看。</summary><published>2010-10-01T14:34:00Z</published><updated>2010-10-01T14:34:00Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/longer/archive/2010/10/01/1840694.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/archive/2010/10/01/1840694.html"/><content type="html">&lt;p&gt;&amp;nbsp;&lt;a href="http://blog.templatemonster.com/" target="_blank"&gt;http://blog.templatemonster.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;该网站有好多新的html5模板，强烈推荐一看。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/longer/aggbug/1840694.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/longer/archive/2010/10/01/1840694.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/longer/archive/2010/09/13/1825352.html</id><title type="text">SQL SERVERR中未公开的存储过程sp_MSforeachtable</title><summary type="text">该存储过程用来遍历数据库中的每个表，常见用法如下： 1. 统计数据库中每个表的空间使用情况，返回各表的行数，数据大小，索引大小，未使用空间等。 exec sp_MSforeachtable @command1="sp_spaceused '?'"2.-查询数据库所有表的记录总数CREATETABLE#temp(TableNameVARCHAR(255),RowCntINT)EXECsp_MSfor...</summary><published>2010-09-13T15:33:00Z</published><updated>2010-09-13T15:33:00Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/longer/archive/2010/09/13/1825352.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/archive/2010/09/13/1825352.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp; 该存储过程用来遍历数据库中的每个表，常见用法如下：&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1.&amp;nbsp;&lt;span style="color: #00ccff;"&gt; 统计数据库中每个表的空间使用情况，返回各表的行数，数据大小，索引大小，未使用空间等。&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exec sp_MSforeachtable @command1="sp_spaceused '?'"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.&lt;span class="Apple" style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px;"&gt;&lt;span class="Apple" style="text-align: left; line-height: 21px; font-family: verdana, sans-serif; font-size: 14px;"&gt;&lt;span style="color: #008080;"&gt;-&lt;/span&gt;&lt;span style="color: #008080;"&gt;查询数据库所有表的记录总数&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" style="border-width: 0px;" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;#&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;temp&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(TableName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&amp;nbsp;RowCnt&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;INT&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" style="border-width: 0px;" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;EXEC&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;sp_MSforeachtable&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;INSERT&amp;nbsp;INTO&amp;nbsp;#temp&amp;nbsp;SELECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;?&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,&amp;nbsp;COUNT(*)&amp;nbsp;FROM&amp;nbsp;?&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" style="border-width: 0px;" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TableName,&amp;nbsp;RowCnt&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;#&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;temp&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TableName&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" style="border-width: 0px;" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;#&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;temp&lt;br /&gt;&amp;nbsp;&amp;nbsp; 3.删除所有表&lt;br /&gt;&amp;nbsp;&amp;nbsp; exec sp_MSforeachtable @command1="drop table ?";&lt;br /&gt;&amp;nbsp;&amp;nbsp; 4.清除所有表中数据&lt;br /&gt;&amp;nbsp;&amp;nbsp; exec sp_MSforeachtable @command1="TRUNCATE TABLE ?"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/longer/aggbug/1825352.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/longer/archive/2010/09/13/1825352.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/longer/archive/2010/09/09/1822537.html</id><title type="text">.net 4.0 ValidateRequest=&amp;quot;false&amp;quot; 无效</title><summary type="text">昨天一客户的后台中的在线编辑器中的内容提交时，报错。客户的操作系统是韩文的，不过基本上看出错误是“提交的代码中包含危险字符"，根据以前的经验，直接在页面上加了个validateRequest="false"，结果再次提交还是报错。在本地测试没问题的，为什么到了服务器上就不好用了呢？难道和文件编码有问题，中文的东西在韩文系统下有问题？编码重置为utf-8编码，还是不行。别的区别也就只有客...</summary><published>2010-09-09T10:04:00Z</published><updated>2010-09-09T10:04:00Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/longer/archive/2010/09/09/1822537.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/archive/2010/09/09/1822537.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 昨天一客户的后台中的在线编辑器中的内容提交时，报错。客户的操作系统是韩文的，不过基本上看出错误是&amp;ldquo;提交的代码中包含危险字符"，根据以前的经验，直接在页面上加了个validateRequest="false"，结果再次提交还是报错。在本地测试没问题的，为什么到了服务器上就不好用了呢？难道和文件编码有问题，中文的东西在韩文系统下有问题？编码重置为utf-8编码，还是不行。别的区别也就只有客户的服务器上的Framework版本是4.0，开发的机器上是vs2008带的Framework3.5，难道和这个有关系？&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 查了一下，一试，还真是和这个有关系。&lt;span&gt;&lt;strong&gt;当你在安装了.NET Framework 4.0以上版本后，当你的应用程序以.NET Framework 4.0为框架版本，你的任意服务器请求，都将被进行服务器请求验证（ValidationRequest），这不仅包括ASP.NET，同时也包括Web Services等各种HTTP请求，不仅仅针对aspx页面，也针对HTTP Handler，HTTP Module等，因为这个验证（Valify）的过程，将会发生在BeginRequest事件之前。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 问题的解决方案就是&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;在全局级别（Web.config中）设置&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;configuration&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;system.web&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;httpRuntime&lt;/span&gt;  &lt;span style="color: red;"&gt;requestValidationMode&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span style="color: blue;"&gt;2.0&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 就是使用2.0版本的请求验证模式，就不会再报这个错了。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 网上原文地址：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;http://apps.hi.baidu.com/share/detail/10878963&lt;/p&gt;&lt;img src="http://www.cnblogs.com/longer/aggbug/1822537.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/longer/archive/2010/09/09/1822537.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/longer/archive/2010/09/08/1821783.html</id><title type="text">《数据库设计指南》学习笔记一：设计数据库之前</title><summary type="text">考察现有环境定义标准的对象命名规范预先计划获取数据模式资源手册畅想未来，但别忘了过去的教训在物理实践之前进行逻辑设计了解你的业务创建数据字典和E-R图表创建模式从输入输出下手报表技巧了解客户需求。 主要知识点有这些，具体的内容仔细看书了。</summary><published>2010-09-08T13:58:00Z</published><updated>2010-09-08T13:58:00Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/longer/archive/2010/09/08/1821783.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/archive/2010/09/08/1821783.html"/><content type="html">&lt;ol&gt;&lt;li&gt;考察现有环境&lt;/li&gt;&lt;li&gt;定义标准的对象命名规范&lt;/li&gt;&lt;li&gt;预先计划&lt;/li&gt;&lt;li&gt;获取数据模式资源手册&lt;/li&gt;&lt;li&gt;畅想未来，但别忘了过去的教训&lt;/li&gt;&lt;li&gt;在物理实践之前进行逻辑设计&lt;/li&gt;&lt;li&gt;了解你的业务&lt;/li&gt;&lt;li&gt;创建数据字典和E-R图表&lt;/li&gt;&lt;li&gt;创建模式&lt;/li&gt;&lt;li&gt;从输入输出下手&lt;/li&gt;&lt;li&gt;报表技巧&lt;/li&gt;&lt;li&gt;了解客户需求。&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp; 主要知识点有这些，具体的内容仔细看书了。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/longer/aggbug/1821783.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/longer/archive/2010/09/08/1821783.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/longer/archive/2010/08/26/1809603.html</id><title type="text">巧用case when 解决多条件模糊查询问题</title><summary type="text">我们在进行项目开发中，经常会遇到多条件模糊查询的需求。对此，我们常见的解决方案有两种：一是在程序端拼接SQL字符串，根据是否选择了某个条件，构造相应的SQL字符串；二是在数据库的存储过程中使用动态的SQL语句。其本质也是拼接SQL字符串，不过是从程序端转移到数据库端而已。 这两种方式的缺点是显而易见的：一是当多个条件每个都可为空时，要使用多个if语句进行判断；二是拼接的SQL语句容易产生SQL注入...</summary><published>2010-08-26T15:23:00Z</published><updated>2010-08-26T15:23:00Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/longer/archive/2010/08/26/1809603.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/archive/2010/08/26/1809603.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们在进行项目开发中，经常会遇到多条件模糊查询的需求。对此，我们常见的解决方案有两种：一是在程序端拼接SQL字符串，根据是否选择了某个条件，构造相应的SQL字符串；二是在数据库的存储过程中使用动态的SQL语句。其本质也是拼接SQL字符串，不过是从程序端转移到数据库端而已。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这两种方式的缺点是显而易见的：一是当多个条件每个都可为空时，要使用多个if语句进行判断；二是拼接的SQL语句容易产生SQL注入漏洞。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最近写数据库存储过程的时候经常使用case when 语句，正好可以用这个语句解决一下以上问题。以SQL中的NorthWind数据库为例，我要操作的是其中的Employees表，该表中默认数据如下：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img src="http://pic002.cnblogs.com/img/longer/201008/2010082623102253.jpg" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 使用如下脚本来查询表中数据：&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;div onclick="cnblogs_code_show('17c29345-cb40-4bff-acfd-e253daecddad')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" class="code_img_closed" id="code_img_closed_17c29345-cb40-4bff-acfd-e253daecddad" style="display: none;" /&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" onclick="cnblogs_code_hide('17c29345-cb40-4bff-acfd-e253daecddad',event)" class="code_img_opened" id="code_img_opened_17c29345-cb40-4bff-acfd-e253daecddad" /&gt;&lt;div id="cnblogs_code_open_17c29345-cb40-4bff-acfd-e253daecddad"&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@FirstName&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;@LastName&lt;/span&gt;&lt;span style="color: #000000;"&gt;   &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;20&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@FirstName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;       &lt;/span&gt;&lt;span style="color: #008000;"&gt;@LastName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;   Employees c&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;CHARINDEX&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;           (&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;               &lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;CASE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;WHEN&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@FirstName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;THEN&lt;/span&gt;&lt;span style="color: #000000;"&gt; FirstName&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ELSE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@FirstName&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt;               &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt;           ),&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;           FirstName&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt;       ) &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt;       &lt;/span&gt;&lt;span style="color: #808080;"&gt;AND&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;CHARINDEX&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt;               (&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;CASE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;WHEN&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@LastName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;THEN&lt;/span&gt;&lt;span style="color: #000000;"&gt; LastName &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ELSE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@LastName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #000000;"&gt;               LastName&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; &lt;span style="color: #000000;"&gt;           ) &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;执行后会发现查出的结果和图1一样。&lt;br /&gt;我们把第二行的@FirstName变量赋值为'n'试试，会把所有FirstName字段中包含字符串'n'的记录查出来，如下图：&lt;br /&gt;&lt;img src="http://pic002.cnblogs.com/img/longer/201008/2010082623163730.jpg" /&gt;&lt;br /&gt;如果我们再把第三行的@LastName变量赋值为'd'试试，结果会把所有FirstName字段包含'n'并且LastName字段包含'd'的记录查出来，如下图：&lt;br /&gt;&lt;img src="http://pic002.cnblogs.com/img/longer/201008/2010082623240655.jpg" /&gt;&lt;br /&gt;通过以上例子我们可以看到，通过给两个变量传递不同的值，就可以根据多条件进行模糊查询了，如果把上面的语句写在存储过程中，就可以不必再拼接SQL语句了，也不会出现注入式问题了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 以上脚本的简单说明：用charindex函数替换like，避免拼接sql语句；使用case when 语句，当传递的参数值为空字符串时让条件始终为真，即等于忽略该条件，不为空串时按参数值模糊查询。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 以上是工作中的经验总结，希望对大家有帮助。有关case when还有一些比较实用的用法，有时间的话再写写。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/longer/aggbug/1809603.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/longer/archive/2010/08/26/1809603.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/longer/archive/2010/08/26/1809559.html</id><title type="text">安装vs2010后新建项目FrameWork版本选择只有4.0的解决方案</title><summary type="text">新买的笔记本上安装了2003系统，直接安装的vs2010的评估版，安装完后，新建项目的时候发现没有vs2008中习惯的Framework版本选择，只有Framework4.0。那我想建立基于Framework2.0的程序不是不行了。解决方案是下载Framework3.5的sp1补丁包，重新重新安装一下就OK了。上个截图吧：</summary><published>2010-08-26T14:24:00Z</published><updated>2010-08-26T14:24:00Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/longer/archive/2010/08/26/1809559.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/archive/2010/08/26/1809559.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 新买的笔记本上安装了2003系统，直接安装的vs2010的评估版，安装完后，新建项目的时候发现没有vs2008中习惯的Framework版本选择，只有Framework4.0。那我想建立基于Framework2.0的程序不是不行了。解决方案是下载Framework3.5的sp1补丁包，重新重新安装一下就OK了。上个截图吧：&lt;br /&gt;&lt;img src="http://pic002.cnblogs.com/img/longer/201008/2010082622234286.jpg" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/longer/aggbug/1809559.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/longer/archive/2010/08/26/1809559.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/longer/archive/2010/05/15/1735940.html</id><title type="text">SQL Server直接执行.sql文件</title><summary type="text">客户的数据库数据被篡改，利用Log Explorer工具根据日志生成的回滚脚本有200多M，不可能一下子扔到查询分析器里去执行，于是想是否SQL Server是否可以像Oracle那样直接执行.sql文件。讲过查资料，测试，发现可以在cmd窗口中执行如下命令执行Sql文件： osql -S 127.0.0.1 -U sa -P sa -i d:\test.sql 简单说明：osql为SQL Ser...</summary><published>2010-05-15T01:29:00Z</published><updated>2010-05-15T01:29:00Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/longer/archive/2010/05/15/1735940.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/archive/2010/05/15/1735940.html"/><content type="text">客户的数据库数据被篡改，利用Log Explorer工具根据日志生成的回滚脚本有200多M，不可能一下子扔到查询分析器里去执行，于是想是否SQL Server是否可以像Oracle那样直接执行.sql文件。讲过查资料，测试，发现可以在cmd窗口中执行如下命令执行Sql文件： osql -S 127.0.0.1 -U sa -P sa -i d:\test.sql 简单说明：osql为SQL Ser...</content></entry><entry><id>http://www.cnblogs.com/longer/archive/2010/02/25/1673884.html</id><title type="text">【转自大家论坛】jQuery 1.4: 15个你应该知道的新特性</title><summary type="text">jQuery 1.4 最近刚刚发布. 这个版本可不是一个简单的改进,它不仅包含了很多新的特性，还改进了很多功能, 更在性能优化方面下了很大功夫, 本文将对这些新的特性和增强的部分进行讨论,希望能对你有所帮助.首先现在你可以从这里下载最新的1.4的版本了: http://code.jquery.com/jquery-1.4.js1. 传递属性给jQuery1.4之前的版本中jQuery就通过"att...</summary><published>2010-02-25T15:34:00Z</published><updated>2010-02-25T15:34:00Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/longer/archive/2010/02/25/1673884.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/archive/2010/02/25/1673884.html"/><content type="text">jQuery 1.4 最近刚刚发布. 这个版本可不是一个简单的改进,它不仅包含了很多新的特性，还改进了很多功能, 更在性能优化方面下了很大功夫, 本文将对这些新的特性和增强的部分进行讨论,希望能对你有所帮助.首先现在你可以从这里下载最新的1.4的版本了: http://code.jquery.com/jquery-1.4.js1. 传递属性给jQuery1.4之前的版本中jQuery就通过"att...</content></entry><entry><id>http://www.cnblogs.com/longer/archive/2009/09/09/1563095.html</id><title type="text">小技巧：Response.Redirect(...,true/false)</title><summary type="text">意思就是是否还要执行 Response.Redirect(...,true/false) 后的语句。 为True 的话，不再执行 Redirect 后的语句; False的话，依然后执行Redirect后的语句。</summary><published>2009-09-09T02:46:00Z</published><updated>2009-09-09T02:46:00Z</updated><author><name>John Liu</name><uri>http://www.cnblogs.com/longer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/longer/archive/2009/09/09/1563095.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/longer/archive/2009/09/09/1563095.html"/><content type="text">意思就是是否还要执行 Response.Redirect(...,true/false) 后的语句。 为True 的话，不再执行 Redirect 后的语句; False的话，依然后执行Redirect后的语句。</content></entry></feed>
