hackenliu

勿以善小而不为(离开CSDN,走进博客园)
随笔 - 6, 文章 - 5, 评论 - 1, 引用 - 0
数据加载中……

2008年6月19日

返回唯一标识

@@IDENTITY

返回最后插入的标识值。

语法

@@IDENTITY

返回类型

numeric

注释

在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL。若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值。如果此语句激发一个或多个执行产生标识值的插入操作的触发器,则语句执行后立即调用 @@IDENTITY 将返回由触发器产生的最后的标识值。若 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或事务被回滚,则 @@IDENTITY 值不会还原为以前的设置。

在返回插入到表的 @@IDENTITY 列的最后一个值方面,@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 函数类似。

@@IDENTITY 和 SCOPE_IDENTITY 将返回在当前会话的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。

IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回任何会话和任何作用域中为特定表生成的标识值。有关更多信息,请参见 IDENT_CURRENT

示例

下面的示例向带有标识列的表中插入一行,并用 @@IDENTITY 显示在新行中使用的标识值。

INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'

posted @ 2008-08-14 10:53 hackenliu 阅读(7) | 评论 (0)编辑

常用的sql语句之行列转换

 

use pubs

--加上判断,如果存在表则删除 add  by liu

if exists(select 1 from sysobjects where id=object_id('t') and type='u')  //判断表的是否存在
 drop table t

--行转列
create   table   t
(
      Name         varchar(10)   ,
      Subject   varchar(10)   ,
      Result     int
)

insert   into   t(Name   ,   Subject   ,   Result)   values( '张三 ', '语文 ', '73 ')
insert   into   t(Name   ,   Subject   ,   Result)   values( '张三 ', '数学 ', '83 ')
insert   into   t(Name   ,   Subject   ,   Result)   values( '张三 ', '物理 ', '93 ')
insert   into   t(Name   ,   Subject   ,   Result)   values( '李四 ', '语文 ', '74 ')
insert   into   t(Name   ,   Subject   ,   Result)   values( '李四 ', '数学 ', '83 ')
insert   into   t(Name   ,   Subject   ,   Result)   values( '李四 ', '物理 ', '93 ')

--subject 字段数目确定.
select 姓名= name,
语文=isnull (min(case when subject='语文' then result end),0),--max 用来与分组对应,按人来分组.加上max不会产生错误,但也不会影响结果.
数学=isnull (min(case when subject='数学' then result end),0),--min或,sum一样也可以.
物理=isnull (min(case when subject='物理' then result end),0),
总计=sum(result)
from t
group by name

posted @ 2008-07-28 13:53 hackenliu 阅读(93) | 评论 (0)编辑

WinForm自定义控件一

声明:本文是看了白话博客记录下的精华。如果想得到更好的理解或代码。请看白话programming博客.http://www.cnblogs.com/guanjinke/archive/2006/12/04/582084.html.在此对白话programming表示感谢。

 

自己开发的WinForm控件通常有三种类型:复合控件(Composite Controls),扩展控件(Extended Controls),自定义控件(Custom Controls)。   
      复合控件:将现有的各种控件组合起来,形成一个新的控件,将集中控件的功能集中起来。
      扩展控件:在现有控件的控件的基础上派生出一个新的控件,为原有控件增加新的功能或者修改原有控件的控能。
      自定义控件:直接从System.Windows.Forms.Control类派生出来。Control类提供控件所需要的所有基本功能,包括键盘和鼠标的事件处理。自定义控件是最灵活最强大的方法,但是对开发者的要求也比较高,你必须为Control类的OnPaint事件写代码,你也可以重写Control类的WndProc方法,处理更底层的Windows消息,所以你应该了解GDI+和Windows API。    
      本系列文章主要介绍自定义控件的开发方法。
      控件(可视化的)的基本特征:
      1.       可视化。
      2.       可以与用户进行交互,比如通过键盘和鼠标。
      3.       暴露出一组属性和方法供开发人员使用。
      4.       暴露出一组事件供开发人员使用。
      5.       控件属性的可持久化。
      6.       可发布和可重用。

WinForm常用的Attribute:

BrowsableAttribute:描述是否一个属性或事件应该被显示在属性浏览器里。
   CategoryAttribute:描述一个属性或事件的类别,当使用类别的时候,属性浏览器按类别将属性分组。
   DescriptionAttribute:当用户在属性浏览器里选择属性的时候,description里指定的文本会显示在属性浏览器的下边,向用户显示属性的功能。
   BindableAttribute:描述是否一个属性倾向于被绑定。
   DefaultPropertyAttribute:为组件指定一个默认的属性,当用户在Form设计器上选择一个控件的时候,默认属性会在属性浏览器里被选中。   
   DefaultValueAttribute:为一个简单类型的属性设置一个默认值。
   EditorAttribute:为属性指定一个特殊的编辑器。
   LocalizableAttribute:指示一个属性是否能被本地化,任何有这个Attribute的属性将会被持久化到资源文件里。   
   DesignerSerializationVisibilityAttribute:指示一个属性是否或者如何持久化到代码里。
   TypeConverterAttribute:为属性指定一个类型转换器,类型转换器能将属性的值转化成其它的数据类型。
   DefaultEventAttribute:为组件指定一个默认的事件,当用户在form设计其中选择一个控件的时候,在属性浏览器中这个事件被选中。

DesignerSerializationVisibilityAttribute的功能是指示一个属性是否串行化和如何串行化,它的值是一个枚举,一共有三种类型Content,Hidden,Visible。Content指示代码生成器为对象包含的内容生成代码,而不是为对象本身,Hidden指示代码生成器不为对象生成代码,visible指示代码生成器为对象生成代码。假如你的控件有一个集合属性,又想在设计时自动将集合属性的内容生成代码,那么就使用这个Attribute,并将值设为DesignerSerializationVisibility.Content。

 

TypeConverterAttribute的作用就更大一些,也稍微复杂一些。TypeConverterAttribute主要的目的是为属性指定一个类型转换器,这个转化器可以将属性的值转换城其它的类型。.NET框架已经为大部分常用的类型都提供了类型转换器,比如Color就有ColorConverter,枚举类型就有EnumConverter,等等,所以一般情况下你没有必要写类型转换器,如果你的属性的特殊的类型或者自定义的类型那么就必须要写了。类型转换器都是从System.ComponentModel.TypeConverter派生出来的,你需要重写其中的一些方法来达到转换的目的,在我们开发的过程中,其实只关心属性的值如何转换成字符串(因为属性的值需要在属性浏览器里显示出来,属性浏览器里显示的都是字符串)和源代码(需要自动为属性的值生成源代码以实现持久化),当然反过来,也要将字符串和源代码转换成属性的值。另外使用TypeConverter也可以实现子属性,让属性的子属性也显示在属性浏览器里,并且可以折叠。

posted @ 2008-07-23 18:37 hackenliu 阅读(182) | 评论 (0)编辑

javascrip学习扎记

     摘要: javacript注意问题。  阅读全文

posted @ 2008-07-23 10:40 hackenliu 阅读(104) | 评论 (0)编辑

上海易传媒

sd

posted @ 2008-06-19 12:57 hackenliu 阅读(18) | 评论 (0)编辑