﻿<?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>博客园-hackenliu</title><link>http://www.cnblogs.com/hackenliu/</link><description>勿以善小而不为(离开CSDN，走进博客园)</description><language>zh-cn</language><lastBuildDate>Thu, 28 Aug 2008 18:26:40 GMT</lastBuildDate><pubDate>Thu, 28 Aug 2008 18:26:40 GMT</pubDate><ttl>60</ttl><item><title>返回唯一标识</title><link>http://www.cnblogs.com/hackenliu/archive/2008/08/14/1267635.html</link><dc:creator>hackenliu</dc:creator><author>hackenliu</author><pubDate>Thu, 14 Aug 2008 02:53:00 GMT</pubDate><guid>http://www.cnblogs.com/hackenliu/archive/2008/08/14/1267635.html</guid><wfw:comment>http://www.cnblogs.com/hackenliu/comments/1267635.html</wfw:comment><comments>http://www.cnblogs.com/hackenliu/archive/2008/08/14/1267635.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hackenliu/comments/commentRss/1267635.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hackenliu/services/trackbacks/1267635.html</trackback:ping><description><![CDATA[<h1><a name="_.4040.identity"></a><font style="background-color: #316ac5" color="#ffffff">@@IDENTITY</font></h1>
<p>返回最后插入的标识值。</p>
<h5>语法</h5>
<p><font style="background-color: #316ac5" color="#ffffff">@@IDENTITY</font></p>
<h5>返回类型</h5>
<p><strong>numeric</strong></p>
<h5>注释</h5>
<p>在一条 INSERT、SELECT INTO 或大容量复制语句完成后，@@<font style="background-color: #316ac5" color="#ffffff">IDENTITY</font> 中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表，则 <font style="background-color: #316ac5" color="#ffffff">@@IDENTITY</font> 返回 NULL。若插入了多个行，则会产生多个标识值，@@<font style="background-color: #316ac5" color="#ffffff">IDENTITY</font> 返回最后产生的标识值。如果此语句激发一个或多个执行产生标识值的插入操作的触发器，则语句执行后立即调用 <font style="background-color: #316ac5" color="#ffffff">@@IDENTITY</font> 将返回由触发器产生的最后的标识值。若 INSERT 或 SELECT INTO 语句失败或大容量复制失败，或事务被回滚，则 <font style="background-color: #316ac5" color="#ffffff">@@IDENTITY</font><em> </em>值不会还原为以前的设置。</p>
<p>在返回插入到表的 <font style="background-color: #316ac5" color="#ffffff">@@IDENTITY</font> 列的最后一个值方面，@@<font style="background-color: #316ac5" color="#ffffff">IDENTITY</font>、SCOPE_<font style="background-color: #316ac5" color="#ffffff">IDENTITY</font> 和 IDENT_CURRENT 函数类似。 </p>
<p><font style="background-color: #316ac5" color="#ffffff">@@IDENTITY</font> 和 SCOPE_<font style="background-color: #316ac5" color="#ffffff">IDENTITY</font> 将返回在当前会话的所有表中生成的最后一个标识值。但是，SCOPE_<font style="background-color: #316ac5" color="#ffffff">IDENTITY</font> 只在当前作用域内返回值，而 <font style="background-color: #316ac5" color="#ffffff">@@IDENTITY</font> 不限于特定的作用域。</p>
<p>IDENT_CURRENT 不受作用域和会话的限制，而受限于指定的表。IDENT_CURRENT 返回任何会话和任何作用域中为特定表生成的标识值。有关更多信息，请参见 <a href="http://www.cnblogs.com/hackenliu/admin/mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_ia-iz_82i1.htm">IDENT_CURRENT</a>。</p>
<h5>示例</h5>
<p>下面的示例向带有标识列的表中插入一行，并用 <font style="background-color: #316ac5" color="#ffffff">@@IDENTITY</font> 显示在新行中使用的标识值。</p>
<pre><code>INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)
SELECT <font style="background-color: #316ac5" color="#ffffff">@@IDENTITY</font> AS 'Identity'
</code></pre>
<img src ="http://www.cnblogs.com/hackenliu/aggbug/1267635.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41943/" target="_blank">[新闻]轮回－新浪推出Facebook模式的SNS</a>]]></description></item><item><title>常用的sql语句之行列转换</title><link>http://www.cnblogs.com/hackenliu/archive/2008/07/28/1254729.html</link><dc:creator>hackenliu</dc:creator><author>hackenliu</author><pubDate>Mon, 28 Jul 2008 05:53:00 GMT</pubDate><guid>http://www.cnblogs.com/hackenliu/archive/2008/07/28/1254729.html</guid><wfw:comment>http://www.cnblogs.com/hackenliu/comments/1254729.html</wfw:comment><comments>http://www.cnblogs.com/hackenliu/archive/2008/07/28/1254729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hackenliu/comments/commentRss/1254729.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hackenliu/services/trackbacks/1254729.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>use pubs</p>
<p>--加上判断,如果存在表则删除 add&nbsp; by liu</p>
<p>if exists(select 1 from <span style="color: red">sysobjects </span>where id=<span style="color: red">object_id</span>('t') and type='u')&nbsp; //判断表的是否存在<br />
&nbsp;drop table t<br />
</p>
<p>--行转列<br />
create&nbsp;&nbsp; table&nbsp;&nbsp; t <br />
( <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varchar(10)&nbsp;&nbsp; , <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subject&nbsp;&nbsp; varchar(10)&nbsp;&nbsp; , <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Result&nbsp;&nbsp;&nbsp;&nbsp; int <br />
) </p>
<p>insert&nbsp;&nbsp; into&nbsp;&nbsp; t(Name&nbsp;&nbsp; ,&nbsp;&nbsp; Subject&nbsp;&nbsp; ,&nbsp;&nbsp; Result)&nbsp;&nbsp; values( '张三 ', '语文 ', '73 ') <br />
insert&nbsp;&nbsp; into&nbsp;&nbsp; t(Name&nbsp;&nbsp; ,&nbsp;&nbsp; Subject&nbsp;&nbsp; ,&nbsp;&nbsp; Result)&nbsp;&nbsp; values( '张三 ', '数学 ', '83 ') <br />
insert&nbsp;&nbsp; into&nbsp;&nbsp; t(Name&nbsp;&nbsp; ,&nbsp;&nbsp; Subject&nbsp;&nbsp; ,&nbsp;&nbsp; Result)&nbsp;&nbsp; values( '张三 ', '物理 ', '93 ') <br />
insert&nbsp;&nbsp; into&nbsp;&nbsp; t(Name&nbsp;&nbsp; ,&nbsp;&nbsp; Subject&nbsp;&nbsp; ,&nbsp;&nbsp; Result)&nbsp;&nbsp; values( '李四 ', '语文 ', '74 ') <br />
insert&nbsp;&nbsp; into&nbsp;&nbsp; t(Name&nbsp;&nbsp; ,&nbsp;&nbsp; Subject&nbsp;&nbsp; ,&nbsp;&nbsp; Result)&nbsp;&nbsp; values( '李四 ', '数学 ', '83 ') <br />
insert&nbsp;&nbsp; into&nbsp;&nbsp; t(Name&nbsp;&nbsp; ,&nbsp;&nbsp; Subject&nbsp;&nbsp; ,&nbsp;&nbsp; Result)&nbsp;&nbsp; values( '李四 ', '物理 ', '93 ') </p>
<p>--subject 字段数目确定.<br />
select 姓名= name,<br />
语文=isnull (min(case when subject='语文' then result end),0),--max 用来与分组对应,按人来分组.加上max不会产生错误,但也不会影响结果.<br />
数学=isnull (min(case when subject='数学' then result end),0),--min或,sum一样也可以.<br />
物理=isnull (min(case when subject='物理' then result end),0),<br />
总计=sum(result)<br />
from t<br />
group by name</p>
<img src ="http://www.cnblogs.com/hackenliu/aggbug/1254729.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41940/" target="_blank">[新闻]惠普139亿美元完成对EDS的收购</a>]]></description></item><item><title>WinForm自定义控件一</title><link>http://www.cnblogs.com/hackenliu/archive/2008/07/23/1249885.html</link><dc:creator>hackenliu</dc:creator><author>hackenliu</author><pubDate>Wed, 23 Jul 2008 10:37:00 GMT</pubDate><guid>http://www.cnblogs.com/hackenliu/archive/2008/07/23/1249885.html</guid><wfw:comment>http://www.cnblogs.com/hackenliu/comments/1249885.html</wfw:comment><comments>http://www.cnblogs.com/hackenliu/archive/2008/07/23/1249885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hackenliu/comments/commentRss/1249885.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hackenliu/services/trackbacks/1249885.html</trackback:ping><description><![CDATA[<p><span style="color: red">声明：本文是看了白话博客记录下的精华。如果想得到更好的理解或代码。请看白话programming博客.</span><a href="http://www.cnblogs.com/guanjinke/archive/2006/12/04/582084.html"><span style="color: red">http://www.cnblogs.com/guanjinke/archive/2006/12/04/582084.html</span></a><span style="color: red">.在此对白话programming表示感谢。</span></p>
<p>&nbsp;</p>
<p>自己开发的WinForm控件通常有三种类型：复合控件（Composite Controls），扩展控件（Extended Controls），自定义控件（Custom Controls）。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>复合控件</strong>：将现有的各种控件组合起来，形成一个新的控件，将集中控件的功能集中起来。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>&nbsp;扩展控件</strong>：在现有控件的控件的基础上派生出一个新的控件，为原有控件增加新的功能或者修改原有控件的控能。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>自定义控件</strong>：直接从System.Windows.Forms.Control类派生出来。Control类提供控件所需要的所有基本功能，包括键盘和鼠标的事件处理。自定义控件是最灵活最强大的方法，但是对开发者的要求也比较高，你必须为Control类的OnPaint事件写代码，你也可以重写Control类的WndProc方法，处理更底层的Windows消息，所以你应该了解GDI＋和Windows API。&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本系列文章主要介绍自定义控件的开发方法。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;控件（可视化的）的基本特征：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可视化。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以与用户进行交互，比如通过键盘和鼠标。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 暴露出一组属性和方法供开发人员使用。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 暴露出一组事件供开发人员使用。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 控件属性的可持久化。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可发布和可重用。</p>
<p>WinForm常用的Attribute:</p>
<p><span style="font-family: 宋体"><strong>BrowsableAttribute</strong>：描述是否一个属性或事件应该被显示在属性浏览器里。<br />
&nbsp;&nbsp;&nbsp;<strong>CategoryAttribute</strong>：描述一个属性或事件的类别，当使用类别的时候，属性浏览器按类别将属性分组。<br />
&nbsp;&nbsp;&nbsp;<strong>DescriptionAttribute</strong>：当用户在属性浏览器里选择属性的时候，description里指定的文本会显示在属性浏览器的下边，向用户显示属性的功能。<br />
&nbsp;&nbsp;&nbsp;<strong>BindableAttribute</strong>：描述是否一个属性倾向于被绑定。<br />
&nbsp;&nbsp;&nbsp;<strong>DefaultPropertyAttribute</strong>：为组件指定一个默认的属性，当用户在Form设计器上选择一个控件的时候，默认属性会在属性浏览器里被选中。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<strong>DefaultValueAttribute</strong>：为一个简单类型的属性设置一个默认值。<br />
&nbsp;&nbsp;&nbsp;<strong>EditorAttribute</strong>：为属性指定一个特殊的编辑器。<br />
&nbsp;&nbsp;&nbsp;<strong>LocalizableAttribute</strong>：指示一个属性是否能被本地化，任何有这个Attribute的属性将会被持久化到资源文件里。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<strong style="color: #0000ff">DesignerSerializationVisibilityAttribute</strong>：指示一个属性是否或者如何持久化到代码里。<br />
&nbsp;&nbsp;&nbsp;<strong style="color: #0000ff">TypeConverterAttribute</strong>：为属性指定一个类型转换器，类型转换器能将属性的值转化成其它的数据类型。<br />
&nbsp;&nbsp;&nbsp;<strong>DefaultEventAttribute</strong>：为组件指定一个默认的事件，当用户在form设计其中选择一个控件的时候，在属性浏览器中这个事件被选中。</span></p>
<p><span style="font-family: 宋体"><span style="color: red"><span style="color: #0000ff; font-family: 宋体">DesignerSerializationVisibilityAttribute</span></span>的功能是指示一个属性是否串行化和如何串行化，它的值是一个枚举，一共有三种类型Content，Hidden，Visible。Content指示代码生成器为对象包含的内容生成代码，而不是为对象本身，Hidden指示代码生成器不为对象生成代码，visible指示代码生成器为对象生成代码。假如你的控件有一个集合属性，又想在设计时自动将集合属性的内容生成代码，那么就使用这个Attribute，并将值设为DesignerSerializationVisibility.Content。</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体"><span style="color: #0000ff"><span style="font-family: 宋体">TypeConverterAttribute</span></span>的作用就更大一些，也稍微复杂一些。TypeConverterAttribute主要的目的是为属性指定一个类型转换器，这个转化器可以将属性的值转换城其它的类型。<a title="" href="http://www.cnblogs.com/guanjinke/admin/guanjinke.cnblogs.com">.NET</a>框架已经为大部分常用的类型都提供了类型转换器，比如Color就有ColorConverter，枚举类型就有EnumConverter，等等，所以一般情况下你没有必要写类型转换器，如果你的属性的特殊的类型或者自定义的类型那么就必须要写了。类型转换器都是从System.ComponentModel.TypeConverter派生出来的，你需要重写其中的一些方法来达到转换的目的，在我们开发的过程中，其实只关心属性的值如何转换成字符串（因为属性的值需要在属性浏览器里显示出来，属性浏览器里显示的都是字符串）和源代码（需要自动为属性的值生成源代码以实现持久化），当然反过来，也要将字符串和源代码转换成属性的值。另外使用TypeConverter也可以实现子属性，让属性的子属性也显示在属性浏览器里，并且可以折叠。</span></p>
 <img src ="http://www.cnblogs.com/hackenliu/aggbug/1249885.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41939/" target="_blank">[新闻]搜狗五笔输入法发布</a>]]></description></item><item><title>javascrip学习扎记</title><link>http://www.cnblogs.com/hackenliu/archive/2008/07/23/1249327.html</link><dc:creator>hackenliu</dc:creator><author>hackenliu</author><pubDate>Wed, 23 Jul 2008 02:40:00 GMT</pubDate><guid>http://www.cnblogs.com/hackenliu/archive/2008/07/23/1249327.html</guid><wfw:comment>http://www.cnblogs.com/hackenliu/comments/1249327.html</wfw:comment><comments>http://www.cnblogs.com/hackenliu/archive/2008/07/23/1249327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hackenliu/comments/commentRss/1249327.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hackenliu/services/trackbacks/1249327.html</trackback:ping><description><![CDATA[摘要: javacript注意问题。&nbsp;&nbsp;<a href='http://www.cnblogs.com/hackenliu/archive/2008/07/23/1249327.html'>阅读全文</a><img src ="http://www.cnblogs.com/hackenliu/aggbug/1249327.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41939/" target="_blank">[新闻]搜狗五笔输入法发布</a>]]></description></item><item><title>上海易传媒</title><link>http://www.cnblogs.com/hackenliu/archive/2008/06/19/1225809.html</link><dc:creator>hackenliu</dc:creator><author>hackenliu</author><pubDate>Thu, 19 Jun 2008 04:57:00 GMT</pubDate><guid>http://www.cnblogs.com/hackenliu/archive/2008/06/19/1225809.html</guid><wfw:comment>http://www.cnblogs.com/hackenliu/comments/1225809.html</wfw:comment><comments>http://www.cnblogs.com/hackenliu/archive/2008/06/19/1225809.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hackenliu/comments/commentRss/1225809.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hackenliu/services/trackbacks/1225809.html</trackback:ping><description><![CDATA[sd
<img src ="http://www.cnblogs.com/hackenliu/aggbug/1225809.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41938/" target="_blank">[新闻]新学年开始 大学生适用的十大互联网应用</a>]]></description></item></channel></rss>