随笔 - 2  文章 - 0 评论 - 1 trackbacks - 0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

昵称:子夜星辰
园龄:3年4个月
粉丝:5
关注:2

搜索

 
 

常用链接

我的标签

随笔档案

最新评论

今天的主要收获是研究了存储过程在asp.net中的应用。主要包括了两个方面:在代码中通过编程的方式使用存储过程和在DataSorce控件使用存储过程。

第一部分:存储过程简要介绍:


1、什么是存储过程?
存储过程(PROCEDURE),是SQL数据库里面的一个术语。通过SQL数据库提供的编程能力,可以将一系列的SQL命令、函数、编程语句组合起来,连续执行,可以说就是数据库的批命令。


2、存储过程的组成:
存储过程包括:名称、参数、语句体、返回值四部分组成。
3、存储过程的简要语法结构是:

■■■■■■代码开始■■■■■■
CREATE PROCEDURE [存储过程的名称]
 [参数1],[参数2],....
AS
 [语句体]
 RETURN [返回值]
■■■■■■代码结束■■■■■■ 

例如:

■■■■■■代码开始■■■■■■


--修改日志分类,集中修改[lc_blogClass]和[BlogClass]

CREATE PROCEDURE dbo.BlogClassUpdate
 /*这是MS SQL2005提供的注释,我觉得很有代表性就留了下来。
 (
 @parameter1 int = 5, --这是指定默认值的范例
 @parameter2 datatype OUTPUT --这是“输出”、“返回值”参数的范例
 )
 */
 
 /*
 *参数说明:
 *编号
 *分类名称
 *分类图片
 *分类排序
 */
 
 @Id int,
 @ClassName nvarchar(50),
 @ClassPic nvarchar(100),
 @sort int
 
AS
 /* SET NOCOUNT ON */
 IF @Id IS NULL
  RETURN -1
  
 --Insert into   [log] ([log]) values ('BlogClassUpdate !!!!')
 Update [lc_BlogClass] Set [sort] = @sort WHERE Id = @Id
 
 Update [BlogClass] Set [ClassName] = @ClassName,[ClassPic] = @ClassPic  WHERE ClassId = @Id
 
 RETURN 0
■■■■■■代码结束■■■■■■ 

4、存储过程的用途
4.1、多条语句连续执行。
有一些连续而且固定的操作,可以封装成一个存储过程,为工作提供方便。
4.2、多个操作合并
在应用程序中使用数据库,有时候会遇到一定的限制,最常见的就是,在某个位置,只允许执行一条语句。在这种情况下,有时候偏偏要连续完成多个操作。比如说上面的范例,程序要求同时修改两个表,但是只能执行一次修改动作。
4.3、预定义的流程
触发器实在删除、更新、插入等操作中触发的预定义动作,触发器也可以同时执行多条语句,触发器的语句体结构和存储过程是一样的。所以有人说触发器就是存储过程的一种特殊应用。


5、存储过程和函数

大多数情况下存储过程和函数都是一样的。但是也有一些不同。
在SQL SERVER的联机丛书里有详细的内容,这里列出部分内容:

存储过程与函数不同,因为存储过程不返回取代其名称的值,也不能直接用在表达式中。
 ——联机丛书
函数中不能使用临时表,和动态SQL
 ——CSDN:http://topic.csdn.net/t/20051027/17/4354930.html
另外还可以看看这两篇文章:

http://www.51testing.com/?141432/action_viewspace_itemid_81171.html
http://topic.csdn.net/t/20051027/17/4354930.html
http://www.cnsdn.com.cn/blog/article.asp?id=2035
http://hi.baidu.com/kevinliu/blog/item/fc9d57da11c215d9b6fd4800.html


第二部分:在代码中通过编程的方式使用存储过程
1、基本要求:通过SqlCommand对象执行。
        System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();
        conn.ConnectionString = this.ConnStr;
        SqlCommand cmd = new SqlCommand();
        conn.Open();
        cmd.Connection = conn;
2、主要步骤:
2.1、指定存储过程的名称和command的类型为存储过程。
        cmd.CommandText = "AddBlogClass";
        cmd.CommandType = CommandType.StoredProcedure;
2.2、添加参数:
        SqlParameter Para1 = new SqlParameter("@ClassName",SqlDbType.NVarChar);
        Para1.Value = TextBoxName.Text;
        cmd.Parameters.Add(Para1);
2.3、执行存储过程
 int result = cmd.ExecuteNonQuery();
3、完整代码:

■■■■■■代码开始■■■■■■

 

Code

 

■■■■■■代码结束■■■■■■ 


第三部分:在DataSorce控件使用存储过程
1、没有参数
对于没有参数的存储过程,直接调用就可以了。
1.1、配置数据源
如果是“配置数据源”就要在“自定义语句和存储过程”中,选择“存储过程”那一选项,然后在下拉列表中选择要使用的存储过程就行了。

1.2、属性面板
如果是通过属性面板设置的,就需要下面这两个步骤:

A:命令类型中选择“StoredProcedure”
注:命令类型包括“SelectCommandType”、“UpdateCommandType”等。


B:在命令类型下面相应的查询(例如SelectCommandType对应的就是SelectQuery)中,单击“查询”框里的按钮。弹出“命令和参数编辑器”,在“Select命令”输入存储过程的名称。然后单击确定。

2、有参数
2.1、添加参数
有参数的存储过程,除了要像上面1.1和1.2中那样添加存储过程的名称之外还需要在1.2.B打开的“命令和参数编辑器”中添加参数。
可以在“命令和参数编辑器”的界面上使用“刷新参数”按钮,也可以使用下面的“添加参数”按钮。

2.2、添加参数的注意事项

2.2.1
对于Select和Delete命令,不要添加“RETURN_VALUE”参数,如果是全用“刷新参数”产生的,那就手工删掉。

2.2.2
对于Delete命令,需要指定参数源。一般情况下就是“Control”(控件),然后在下面选择一个控件(根据控件名)

2.2.3
对于Update命令,【ConflicDetection】不要使用【CompareAllValues】方式的参数,我测试的情况是在这种模式下,无法更新数据。

2.2.4
经常出现的错误“为过程或函数 ### 指定了过多的参数。”
在我测试的过程有,有如下几个原因。
A:对有有参数的存储过程添加了存储过程名称,没有添加参数
B:有多余的“RETURN_VALUE”参数,参见2.2.1
C:如果GridView控件的字段数量和存储过程的参数不一致
D:属性面板的参数名和存储过程的参数名不一致。

流浪是注定的宿命;
漂泊是无尽的轮回。
posted @ 2008-10-13 14:47 子夜星辰 阅读(51) 评论(0) 编辑
激励一生的六个经典故事(转)
1、成功并不像你想象的那么难,并不是因为事情难我们不敢做,而是因为我们不敢做事情才难的。
       1965年,一位韩国学生到剑桥大学主修心理学。在喝下午茶的时候,他常到学校的咖啡厅或茶座听一些成功人士聊天。这些成功人士包括诺贝尔奖获得者,某一些领域的学术权威和一些创造了经济神话的人,这些人幽默风趣,举重若轻,把自己的成功都看得非常自然和顺理成章。时间长了,他发现,在国内时,他被一些成功人士欺骗了。那些人为了让正在创业的人知难而退,普遍把自己的创业艰辛夸大了,也就是说,他们在用自己的成功经历吓唬那些还没有取得成功的人。    作为心理系的学生,他认为很有必要对韩国成功人士的心态加以研究。1970年,他把《成功并不像你想象的那么难》作为毕业论文,提交给现代经济心理学的创始人威尔布雷登教授。布雷登教授读后,大为惊喜,他认为这是个新发现,这种现象虽然在东方甚至在世界各地普遍存在,但此前还没有一个人大胆地提出来并加以研究。惊喜之余,他写信给他的剑桥校友——当时正坐在韩国政坛第一把交椅上的人——朴正熙。他在信中说,“我不敢说这部著作对你有多大的帮助,但我敢肯定它比你的任何一个政令都能产生震动。”  后来这本书果然伴随着韩国的经济起飞了。这本书鼓舞了许多人,因为他们从一个新的角度告诉人们,成功与“劳其筋骨,饿其体肤”、“三更灯火五更鸡”、“头悬梁,锥刺股”没有必然的联系。只要你对某一事业感兴趣,长久地坚持下去就会成功,因为上帝赋予你的时间和智慧够你圆满做完一件事情。后来,这位青年也获得了成功,他成了韩国泛业汽车公司的总裁。
温馨提示:人世中的许多事,只要想做,都能做到,该克服的困难,也都能克服,用不着什么钢铁般的意志,更用不着什么技巧或谋略。只要一个人还在朴实而饶有兴趣地生活着,他终究会发现,造物主对世事的安排,都是水到渠成的。
    2、阴影是一条纸龙:人生中,究竟会对你产生怎样的影响,最终决定权在你手中。
      祖父用纸给我做过一条长龙。长龙腹腔的空隙仅仅只能容纳几只蝗虫,投放进去,它们都在里面死了,无一幸免!祖父说:“蝗虫性子太躁,除了挣扎,它们没想过用嘴巴去咬破长龙,也不知道一直向前可以从另一端爬出来。因而,尽管它有铁钳般的嘴壳和锯齿一般的大腿,也无济于事。“当祖父把几只同样大小的青虫从龙头放进去,然后关上龙头,奇迹出现了:仅仅几分钟,小青虫们就一一地从龙尾爬了出来。      
温馨提示:命运一直藏匿在我们的思想里。许多人走不出人生各个不同阶段或大或小的阴影,并非因为他们天生的个人条件比别人要差多远,而是因为他们没有思想要将阴影纸龙咬破,也没有耐心慢慢地找准一个方向,一步步地向前,直到眼前出现新的洞天。

    3、飞翔的蜘蛛 :信念是一种无坚不摧的力量,当你坚信自己能成功时,你必能成功。
       一天,我发现,一只黑蜘蛛在后院的两檐之间结了一张很大的网。难道蜘蛛会飞?要不,从这个檐头到那个檐头,中间有一丈余宽,第一根线是怎么拉过去的?后来,我发现蜘蛛走了许多弯路——从一个檐头起,打结,顺墙而下,一步一步向前爬,小心翼翼,翘起尾部,不让丝沾到地面的沙石或别的物体上,走过空地,再爬上对面的檐头,高度差不多了,再把丝收紧,以后也是如此。
      温馨提示:蜘蛛不会飞翔,但它能够把网凌结在半空中。它是勤奋、敏感、沉默而坚韧的昆虫,它的网制得精巧而规矩,八卦形地张开,仿佛得到神助。这样的成绩,使人不由想起那些沉默寡言的人和一些深藏不露的智者。于是,我记住了蜘蛛不会飞翔,但它照样把网结在空中。奇迹是执着者造成的。

    4、为生命画一片树叶:只要心存相信,总有奇迹发生,希望虽然渺茫,但它永存人世。
      美国作家欧亨利在他的小说《最后一片叶子》里讲了个故事:病房里,一个生命垂危的病人从房间里看见窗外的一棵树,在秋风中一片片地掉落下来。病人望着眼前的萧萧落叶,身体也随之每况愈下,一天不如一天。她说:“当树叶全部掉光时,我也就要死了。”一位老画家得知后,用彩笔画了一片叶脉青翠的树叶挂在树枝上。最后一片叶子始终没掉下来。只因为生命中的这片绿,病人竟奇迹般地活了下来。         温馨提示:人生可以没有很多东西,却唯独不能没有希望。希望是人类生活的一项重要的价值。有希望之处,生命就生生不息

    5、昂起头来真美:别看它是一条黑母牛,牛奶一样是白的。
      珍妮是个总爱低着头的小女孩,她一直觉得自己长得不够漂亮。有一天,她到饰物店去买了只绿色蝴蝶结,店主不断赞美她戴上蝴蝶结挺漂亮,珍妮虽不信,但是挺高兴,不由昂起了头,急于让大家看看,出门与人撞了一下都没在意。珍妮走进教室,迎面碰上了她的老师,“珍妮,你昂起头来真美!”老师爱抚地拍拍她的肩说.那一天,她得到了许多人的赞美。她想一定是蝴蝶结的功劳,可往镜前一照,头上根本就没有蝴蝶结,一定是出饰物店时与人一碰弄丢了。自信原本就是一种美丽,而很多人却因为太在意外表而失去很多快乐。
     温馨提示:无论是贫穷还是富有,无论是貌若天仙,还是相貌平平,只要你昂起头来,快乐会使你变得可爱——人人都喜欢的那种可爱。

    6、生命的价值:不要让昨日的沮丧令明天的梦想黯然失色!
       在一次讨论会上,一位著名的演说家没讲一句开场白,手里却高举着一张20美元的钞票。面对会议室里的200个人,他问:“谁要这20美元?”一只只手举了起来。他接着说:“我打算把这20美元送给你们中的一位,但在这之前,请准许我做一件事。”他说着将钞票揉成一团,然后问:“谁还要?”仍有人举起手来。    他又说:“那么,假如我这样做又会怎么样呢?”他把钞票扔到地上,又踏上一只脚,并且用脚碾它。尔后他拾起钞票,钞票已变得又脏又皱。现在谁还要?”还是有人举起手来。“朋友们,你们已经上了一堂很有意义的课。无论我如何对待那张钞票,你们还是想要它,因为它并没贬值,它依旧值20美元。人生路上,我们会无数次被自己的决定或碰到的逆境击倒、欺凌甚至碾得粉身碎骨。我们觉得自己似乎一文不值。但无论发生什么,或将要发生什么,在上帝的眼中,你们永远不会丧失价值。在他看来,肮脏或洁净,衣着齐整或不齐整,你们依然是无价之宝。”
     温馨提示:生命的价值不依赖我们的所作所为,也不仰仗我们结交的人物,而是取决于我们本身!     我们是独特的——永远不要忘记这一点!
posted @ 2008-09-16 13:42 子夜星辰 阅读(81) 评论(1) 编辑