摘要:
或多或少都做过树状目录、产品分类之类的二级或三级菜单,如果遇到更多级的分类,就一般使用递归了。在程序中使用递归或多或少会增加一些性能上的开销。之前我用ASP.net在程序中实现过非递归的无限级分类目录,但考虑到移植性不强,就改成了存储过程,发出来大家共同研究一下,到目前为止,测试过程中还没发现问题,另外,代码方面没经过什么优化。通常情况下,我们更多的操作是读取目录,所以,在下面的实现中,读取我们只需要一Select语句就够了,不使用递归,理论上无限级~!======================================================================表 阅读全文
posted @ 2011-11-01 20:59
星月磊子
阅读(281)
评论(1)
推荐(0)
摘要:
开始事务:begin transaction提交事务:commit transaction回滚事务:rollback transaction例子:begin transactiondeclare @errorSum int --定义局部变量set @errorSum=0 --初始化临时变量update bank set currentMoney=currentMoney-1000 where customerName='张三'set @errorSum=@errorSum+@@error --累计是否有错误update bank set currentMoney=current 阅读全文
posted @ 2011-11-01 18:07
星月磊子
阅读(161)
评论(0)
推荐(0)
摘要:
SQL Server函数大全--聚合函数use pubsgoselect avg(distinct price) --算平均数from titleswhere type='business'use pubsgoselect max(ytd_sales) --最大数from titlesuse pubsgoselect min(ytd_sales) --最小数from titlesuse pubsgoselect type,sum(price),sum(advance) --求和from titlesgroup by type order by typeuse pubsgosel 阅读全文
posted @ 2011-11-01 18:05
星月磊子
阅读(199)
评论(0)
推荐(0)
摘要:
概述 和其他高级语言一样,T-SQL中也有用于控制流程的语句。T-SQL中的流程控制语句进一步扩展了T-SQL的力量……使得大部分业务逻辑可以在数据库层面进行。但很多人对T-SQL中的流程控制语句并没有系统的了解,本篇文章会系统的对T-SQL语句中的流程控制语句进行系统讲解。基本概念 在没有流程控制语句的情况下,T-SQL语句是按照从上到下的顺序逐个执行: 使用流程控制语句可以让开发人员可以基于某些逻辑进行选择性的跳转,实现了类似高级语言的跳转结构: 流程控制语句的使用范围和GO关键字 流程控制语句只能在单个批处理段(Batch),用户自定义函数和存储过程中使用。不能跨多个批处理段或者用户自. 阅读全文
posted @ 2011-11-01 18:02
星月磊子
阅读(194)
评论(0)
推荐(0)
摘要:
触发器实际上就是一种特殊类型的存储过程,其特殊性表现在:它是在执行某些特定的T-SQL语句时自动的。11.1 触发器简介触发器实际上就是一种特殊类型的存储过程,它是在执行某些特定的T-SQL语句时自动执行的一种存储过程。在SQL Server 2005中,根据SQL语句的不同,把触发器分为两类:一类是DML触发器,一类是DLL触发器。11.1.1 触发器的概念和作用在SQL Server 2005里,可以用两种方法来保证数据的有效性和完整性:约束(check)和触发器(Trigger)。约束是直接设置于数据表内,只能现实一些比较简 单的功能操作,如:实现字段有效性和唯一性的检查、自动填入默认值 阅读全文
posted @ 2011-11-01 18:01
星月磊子
阅读(236)
评论(0)
推荐(0)
摘要:
表操作create table t_person1(id int not null,name nvarchar(50),age int null)drop table t_person1alter table t_person1 add department vchar(20)数据更新update Student set Name='李鹏' where Id=5update a set a.Bonus=500 from Student a inner join Gender b on a.Gender=b.Id where b.GenderName='男'upd 阅读全文
posted @ 2011-11-01 17:53
星月磊子
阅读(151)
评论(0)
推荐(0)
摘要:
--SQLSERVER2000取第几行到第几行的方法--(第一种方法)效率最差selecttop5*fromcustomerswhereCustomerIDnotin(selecttop5CustomerIDfromcustomers)--(第二种方法)效率最好, 这里先执行的是Order by 然后才执行Topselectb.*from(selecttop5a.*from(selecttop10*fromcustomersorderbyCustomerIDasc)aorderbya.CustomerIDdesc)borderbyb.CustomerID--(第三种方法)利用临时表和ident 阅读全文
posted @ 2011-11-01 17:38
星月磊子
阅读(321)
评论(0)
推荐(0)
摘要:
sql语句判断方法之一 Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END这两种方式,可以实现相同的功能。简单Case函数的写法相对比较 阅读全文
posted @ 2011-11-01 17:36
星月磊子
阅读(272)
评论(0)
推荐(0)
摘要:
-- =============================================-- Author: 流逝在夏天-- Create date: 2011年8月30日20:55:27-- Update Date: 2011年9月2日3:44:51-- Description: 简单复习存储过程-- =============================================USE ReviewSql--用户表CREATE TABLE Users (ID INT PRIMARY KEY IDENTITY(1,1),UserName VAR... 阅读全文
posted @ 2011-11-01 17:35
星月磊子
阅读(200)
评论(0)
推荐(0)
摘要:
SQL Server 存储过程详解存储过程的优缺点 ◆优点: 执行速度更快。存储过程只在创造时进行编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程执行速度更快。 存储过程用于处理复杂的操作时,程序的可读性更强、网络的负担更小。 使用存储过程封装事务性能更佳。 能有效的放注入,安全性更好。 可维护性高,在一些业务规则发生变化时,有时只需调整存储过程即可,而不用改动和重编辑程序。 更好的代码重用。 ◆ 缺点: 存储过程将给服务器带来额外的压力。 存储过程多多时维护比较困难。 移植性差,在升级到不同的数据库时比较困难。 调试麻烦,SQL语言的处理功能简单。 总... 阅读全文
posted @ 2011-11-01 17:33
星月磊子
阅读(1674)
评论(0)
推荐(0)
摘要:
当我们在用SQL Server数据库开发系统的时候,经常会遇到系统需要权限控制,然而根据权限的控制程度不同有不同的设计方案。1. 基于角色的权限设计这种方案是最常见也是比较简单的方案,不过通常有这种设计已经够了,所以微软就设计出这种方案的通用做法,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述2. 基于操作的权限设计这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下:但是如果直接使用上面的设计,会导致数据库中的UserAction这张表数据量非常大,所以我们需要进一步设计提高效率,请看方案33. 基 阅读全文
posted @ 2011-11-01 17:30
星月磊子
阅读(254)
评论(0)
推荐(0)
摘要:
1. 用一条SQL语句 查询出每门课都大于80分的学生姓名name kechengfenshu 张三 语文81张三 数学75李四 语文76李四 数学90王五 语文81王五 数学100王五 英语90思路:这里不能直接用 分数>80这样的比较条件来查询的到结果,因为要求没门成绩都大于80。我们可以反过来思考,如果有一门成绩小于80,那么就不符合要求。先找出成绩表中成绩<80的多有学生姓名,不能重复,然后再用not in找出不再这个集合中的学生姓名。create table #成绩(姓名varchar(20),课程名称varchar(20),分数int)insert into #成绩va 阅读全文
posted @ 2011-11-01 17:28
星月磊子
阅读(536)
评论(1)
推荐(1)
摘要:
题外话:因为类六有关索引器的内容比较复杂,我想精心准备出经典实例和通俗易懂的讲解内容再发表博客,所以我先跳过索引器,接着学习继承。 本节课我们来学习一下类的继承,在面向对象二 中我已经讲述了继承的概念、优点,但是没有举出具体的代码实例讲解,在这篇博客中,不会再次细致的讲解继承的原理,建议同学们最好是先阅读面向对象二系列后,再学这篇博客,我们现在来回忆一下继承的概念。继承 继承是面向对象理论中最重要的一项机制,通过继承一个现有的类,新创建的类可以不需要再写任何代码,就可以按照继承来的父类中的合适的访问权限直接拥有所继承的类的功能,同时还可以创建自己的专门功能。 就向我在面向对象二中提到的,继承的 阅读全文
posted @ 2011-11-01 17:07
星月磊子
阅读(367)
评论(0)
推荐(0)
摘要:
今天我们来学习抽象类和接口,因为他们在很多方面有相似的用法,所以放到一堂课中讲解,看到这个标题的时候,一定有的同学会说接口,没类字呀,它也是类吗?从本质上接口也是类,和抽象类一样,接口也是一种特殊的类。 作为编程设计者在程序的开发中,设计抽象类和接口就是为了让他们用来被继承的,当一个项目经过需求分析后,一般正规的软件开发公司会由项目经理或经验丰富的开发人员,先根据需求和要实现的大部分功能来设计抽象类和接口,然后再将项目功能分发到开发人员或小组,具体来实现这些抽象类和接口,这样做的好处就是,规范了成员的命名和参数类型,合并代码时减少错误同时方便修改,代码的可读性更强,充分利用面向对象中的三大特性 阅读全文
posted @ 2011-11-01 17:06
星月磊子
阅读(163)
评论(0)
推荐(0)
摘要:
本篇博客我们来学习面向对象的多态性,多态性主要的表现形式就是在继承中当派生类从基类继承时,它会获得基类的所有方法、字段、属性和事件。当父类和子类的成员签名相同的时候,我们可以定义让子类的这个同名成员以何种形式显示出来,父类的这个的成员在子类中又用何种方式存在,这种多面的表现方法我们称为多态。如果我们要更改基类的数据和功能时,也就是说子类中可以以自己的方式去实现父类的功能,有两种方式:1.我们还在子类中可以使用override关键字重写基类中用virtual关键字修饰的虚拟的基成员;2.可以在子类中使用new关键字让派生成员替换基成员,此时基类成员只是被有意的隐藏掉了。 举一个现实生活的例子,我 阅读全文
posted @ 2011-11-01 17:05
星月磊子
阅读(200)
评论(0)
推荐(0)
摘要:
本节课我们来学习索引器,索引器的功能类似于属性,它也有一对get和set访问器,只不过属性是用来封装字段的,而索引器是利用访问器来有条件的来控制类中的数组类成员如数组和集合,get和set访问器的用法与属性一致,这里不做过多的讲解,首先我们定义一个int类型的数组a,观察一下索引器的具体语法: int [] a={1,2,3};//类中的数组也应该定义为私有变量,对外只提供索引器进行对数组的访问publicintthis[int index] //注意在定义索引器时要与所封装的数组类型一致。 { get { return a[index];//通过get访问器,在外部类通过索引器访问数组时,直 阅读全文
posted @ 2011-11-01 17:05
星月磊子
阅读(206)
评论(0)
推荐(0)
摘要:
本节课我们来学习类的扩展分类,看我的标题中就罗列出了类的分类,类按照声明方式和功能定义共分为这六种类,实例类就是我们一直在用的类,class关键字前没有其他的修饰符,之前已经有很多实例类的使用方法了,我们今天主要是学习其他五种类。静态类 静态类就是在class关键字前加入了static关键字,基本语法是static Class ClassName{} 。静态类有几个特点:1.静态类只能包括静态成员2.类本身无法被实例化,也就是不能创建静态类的对象3.静态类无法被继承4.无法包含实例构造方法所以我们在创建静态类的时候,必须注意到以上四点,下面的实例是简单的静态类的使用。静态类实例Code hig 阅读全文
posted @ 2011-11-01 17:04
星月磊子
阅读(263)
评论(0)
推荐(0)
摘要:
今天这节课我们来学习类的构造方法和析构方法,同学们现在回忆一下在类一系列中,学习到创建一个类ClassName的实例,也就是对象ObjName时基本语法为:ClassName ObjName=new ClassName();我说过,new后面的ClasName()实际上指的是这个类的构造方法,而且我也说过,这个()中可以有参数,这个有参数,就是指构造方法可以有参数,那么什么是类的构造方法呢?构造方法 构造方法又叫构造函数,也有人叫做构造器,其实就是对类进行初始化。构造方法是一种特殊的方法,在类实例创建之前执行,用来初始化对象,完成对象创建前所需的相关设定,构造方法允许将类实例初始为有效状态的特 阅读全文
posted @ 2011-11-01 17:03
星月磊子
阅读(266)
评论(0)
推荐(0)
摘要:
这节课我们来学习方法中的参数传递,在面向对象二中,我曾说过,参数也属于变量的一种,在c语言的学习时,同学们都学习过参数这个概念和用法,方法使用参数列表来传递变量的基本语法如下:returnType FunctionName(paraType1 paraName1,paraType2 paraName2,……){ Function body;}其中的returnType是指方法的返回值,FunctionName指方法的标识符,paraType1指参数1的数据类型,paraName1是参数1的标识符,调用这种类型的方法的时候,必须传入与类型paraType1相符的参数值,并且传入的参数个数也必须相 阅读全文
posted @ 2011-11-01 17:03
星月磊子
阅读(267)
评论(0)
推荐(0)
摘要:
上节课我把属性形容成是一个进入房间的窗户或通道,关闭着的房间就是封装好的类,那么属性用代码要如何解释呢?其实这个问题,在我刚学习属性时也是很不理解,如果需要对字段的值进行判断,就写我上面的两段代码(17-38行)不就可以了吗?但是随着我们学习的不断深入,属性是必须掌握的一个知识点,现在同学们只需要会定义属性,同时会访问属性就可以了,日后深入学习(如windowsform)时,我们就理解属性的用法和好处了。在我们这个例子中属性机制就要做到如同守门员一样,限制住非海、陆、空的三种军种,下面把按照刚才军种的例子我来单独写一段代码,同时使用属性,在看代码前,我们先来看一下如何定义一个属性,它的基本语. 阅读全文
posted @ 2011-11-01 17:02
星月磊子
阅读(235)
评论(0)
推荐(0)
摘要:
上一节(教学思路 c#之面向对象二)初步理解面向对象的基本概念中,我没有提到任何的代码,只是用语言和实例来说明什么是类和对象以及面向对象的特性等基本概念,类是c#程序语言的重要核心,也是构建应用程序最主要的元素,在.net类库中,提供了大量支持创建各种应用程序功能的相关类,类是一个庞大的内容,我要分成两节来讲解,本节课我要教同学们如何声明类、对象以及定义类成员,针对类本身的组成与对象关系,进行详细的说明,下节课我们会深入的学习类。 首先让我们回忆一下上节课说过的一些概念,什么是类?什么是对象呢?类就是具有相同的属性和功能的对象的抽象的集合,而对象呢?就是这个类中的一个实体,属于一个类的对象,必 阅读全文
posted @ 2011-11-01 17:01
星月磊子
阅读(942)
评论(0)
推荐(0)
摘要:
1.下载本版本的编辑器压缩包。源码下载地址2.解压缩打开文件夹拥有如下文件:3.在VS中添加“选择项”加载在此文件夹的Bin下FredCK.FCKeditorV2.dll。4.在你的网站的web.config的 <appSettings>枝节中加入CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><appSettings><addkey="FCKeditor:BasePath"value 阅读全文
posted @ 2011-11-01 17:00
星月磊子
阅读(177)
评论(0)
推荐(0)
摘要:
--建库if exists(select * from sys.sysdatabases where name='wf')beginuse masterdrop database wfendgocreate database wfon(name=N'wf',filename=N'E:\MyCode\ETC收费站\ETC收费站\ETC_Data\wf.mdf',size=3mb,maxsize=unlimited,filegrowth=1)log on(name=N'wf',filename=N'E:\MyCode\ETC收 阅读全文
posted @ 2011-11-01 16:58
星月磊子
阅读(170)
评论(0)
推荐(0)
摘要:
CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1//清除文本框内容2privatevoidbtclear_Click(objectsender,EventArgse)3{4//先将窗体上所有的控件遍历出来。5foreach(Controlctrinthis.Controls)6{7if(ctrisGroupBox)//判断是否是groupbox8{9foreach(Controlctr1inctr.Controls)//如果是继续遍 阅读全文
posted @ 2011-11-01 16:58
星月磊子
阅读(152)
评论(0)
推荐(0)
摘要:
1..Net观念 2.简述.Net Framework的两部分的作用?3..Net框架构成(6层)4..Net程序的编译运行机制?5.简述一下你所理解的命名空间和类的意义。6.代码注释的种类?7.Main方法的种类和作用?在一个程序集中使用Main方法的注意事项是?8.如何定义一个常量?常量和变量的区别是?定义一个常量的注意事项是?9.类型转换方式有几种?10.简答C#的数据类型及其区别,列举出几种常见的数据类型11. 定义枚举的关键字是?如何调用枚举的成员?12. 条件控制有几类?采用不同的方式的原则有哪些?13. 循环控制有几类?采用不同的方式的原则有哪些?14. 跳转语句有几种?作用分别 阅读全文
posted @ 2011-11-01 16:56
星月磊子
阅读(298)
评论(0)
推荐(0)
摘要:
如果我们学习了ADO.Net或者实际做过一个与数据库进行数据交互的应用程序,那就非常好理解今天我们所教授的知识点---SQL中的存储过程,存储过程是实际项目开发过程中最常用的处理数据库数据的方式,这是最基本的数据库操作,必须熟练掌握,既然它这么重要,下面我们就开始学习存储过程,有关它的好处和实质,我们放到学习完语法和实例后让大家一起发现式的总结,这样更能体会出存储过程的优势和方便。 首先我们来学习定义一个最简单的存储过程语法,"[ ]"内的语句可以省略:Code highlighting produced by Actipro CodeHighlighter (freewa 阅读全文
posted @ 2011-11-01 16:55
星月磊子
阅读(333)
评论(0)
推荐(0)
摘要:
本节课我们来学习使用sql自带的系统函数,完成查询作业。sql系统函数中较常用的,包括字符串函数、日期函数、聚合函数以及其他函数框架下的数据类型转换、自增长函数、空值函数等。后面所指出的几种函数,我们都在前几节的学习中使用过,今天我们着重来学习前两种函数。 字符串函数: 1.charindex(): 返回字符串中指定表达式的起始位置,公式为:charindex(‘表达式’,字段名 [,起始位置]) 如 使用charindex(‘小’,name,3)将得到‘小’字在字段name值的第三个字符后中所找到的位置,当name字段的一条记录中没有小字,将返回0. 下面针对此函数出一道之前题: 查询出学生 阅读全文
posted @ 2011-11-01 16:54
星月磊子
阅读(167)
评论(0)
推荐(0)
摘要:
表与表之间的连接关系主要分为五种:内连接inner join、左外连接left outer join、右外连接reight outer join、全外连接full outerjoin、交叉连接cross join。 如果查询时用到了表与表的连接关系,应使用on子句作为连接两个表的关联条件,即搜索到符合条件的联合的行的结果集,使用where子句作为过滤表的搜索条件,本节课主要是教授如何使用这四种连接。 内连接:使用inner join将实现查询的结果集中只包含满足on子句表与表的连接条件的行结果集,如果任意个源表中的行在另一个表中没有对应的(符合on子句)的行,结果集将被排除掉,不会包含。 内连 阅读全文
posted @ 2011-11-01 16:53
星月磊子
阅读(237)
评论(0)
推荐(0)
摘要:
视图的概念:视图对象是一个虚拟的表,虚拟表所包含的结果集是对一个或多个表的查询。视图本身不保存这个结果集,而是保存查询的定义。视图的定义是对已经存在表的查询。使用视图和使用表很类似,可以把视图当做一个表来查询,SQL Server动态执行视图的定义得到的结果集。视图与表的区别:视图能为用户集中组织数据 数据库表中所包含的列并不一定都是用户所需要的数据,有些列多用户是无用的,而有些用户需要的列又被分散在多个不同的表中。使用视图可以把用户需要的列组织起来给用户使用。视图可以隐藏数据库的复杂性 如果没有视图对象,用户就需要了解数据库的实体关系的模型,了解每个表的设计等等,然后通过复杂的查询语句获得需 阅读全文
posted @ 2011-11-01 16:53
星月磊子
阅读(259)
评论(0)
推荐(0)
摘要:
1、查询出所有大连地区的学生的成绩。2、查询从来没有参加任何考试的学生的信息。3、查询有考试成绩纪录的学生的信息.4、将所有大连地区学生的课程编号为3的课程成绩加10分。5、删除所有C#课的成绩。6、查询课程编号为3的课程的平均成绩,显示有此门课程成绩的学生编号,成绩及距平均分之间的差值。7、查询参加了所有考试的学生的姓名。8、查询有成绩纪录的学生人数。9、查询有2门以上成绩的学生的姓名和联系方式10、查询哪些学生有c#考试成绩,显示这些学生的姓名11.查询出科目中教师的姓名,同时增加编号。12.随机显示学生信息表中的两条数据:使用newid()函数13.查询出联系电话为null的学生信息,联 阅读全文
posted @ 2011-11-01 16:52
星月磊子
阅读(367)
评论(0)
推荐(0)
摘要:
根据查询要求,写出SQL脚本:1、 查询学生信息表,查找学生的姓名,性别,并将查询结果按姓名进行排序。 2、查询学生信息表,查找地区在大连的学生,显示其姓名,联系电话,地区。3、 查询学生信息表,查找性别为女,并且地区不在大连的学生,显示其姓名,年龄及联系电话,地区。4、 练习通过as对字段进行重命名,实现两列合并显示,如外国人名中姓+名的正常显示。5、 查询学生信息表,查找地区为空的学生的姓名,性别,联系电话。6、 查询成绩表,查找课程编号为2的成绩最好的2名学生的编号。7、查询学生信息表,查找学生来自于哪些地区,显示地区时不重复。8、 查询学生信息表,查找姓李的学生的姓名,性别,联系电话, 阅读全文
posted @ 2011-11-01 16:51
星月磊子
阅读(478)
评论(0)
推荐(0)
摘要:
习题一学员成绩: 1.创建一个名为学员成绩的数据库, 主要数据文件初始大小为10MB,最大空间为30MB,文件增长幅度为5MB,日志文件初始大小为5MB,最大为20MB,文件增长幅度为3MB,请自行设定文件的保存路径。 2.创建学生信息表(Student)包含:学生编号、学生姓名、性别、年龄、地区、联系电话、入学日期。 3.创建课程信息表(Score)包含:课程编号、科目、教师编号 4.创建学生成绩表(chengji)包含:学生编号、课程编号、考试分数。 5.创建教师信息表(teacherInfo)包含:教师编号、教师姓名。 6.建立四个表间的主从表关系。 6.1 学生成绩表中能不能出现在学. 阅读全文
posted @ 2011-11-01 16:49
星月磊子
阅读(830)
评论(0)
推荐(0)

浙公网安备 33010602011771号