重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
区分层次的目的即为了“高内聚,低耦合”的思想。
创新互联于2013年创立,是专业互联网技术服务公司,拥有项目做网站、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元泸溪做网站,已为上家服务,为泸溪各地企业和个人服务,联系电话:028-86922220
优点
1、开发人员可以只关注整个结构中的其中某一层; 2、可以很容易的用新的实现来替换原有层次的实现; 3、可以降低层与层之间的依赖; 4、有利于标准化; 5、利于各层逻辑的复用。
缺点
1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。 2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
首先:你要做到数据库表的约束完整性,比如该设置主键的要设置然后:在C#的数据访问层(DAL一种称谓)做数据操作逻辑的处理,当你向数据库不管是Oracle还是SQLServer都会返回其规则性错误,比如oracle的报错信息ORA-00***,在做数据插入时破获这种报错信息(当然是定向的比如你所说的重复插入),返回给页面,作出操作错误提示(如该记录已添加,请核对!),至于捕获异常和返回到页面的方法,要看你自己的具体实现了,我这里只给出方向。希望回答对你有所帮助
不是文件夹的区别,而是三个不同的项目,
表示层建一个网站,添加对BLL层的引用,页面就调用BLL层的类方法,
BLL层为类库项目,添加对DAL层的引用,再调用他里面的方法。
DAL层也是类库项目,里面就是对数据库的连接,和CRUD操作了。
当然如果可以的话,还可以添加一个Models层,也就是将数据库里每个表,转换成类的形式。
当你生成网站的时候,因为添加了对BLL,DAL,Models层的引用,会自动生成.dll文件,这样就可以直接把整个网站拷到IIS下面发布了。
假设学生表叫student,课程表叫class,选课表叫choose
1.三层嵌套的问题
select student.name from student where student.id IN
(select choose.sid from choose where choose.cid NOT IN
(select class.id from class where class.teacher='李明'))
2.一个内连接,一个嵌套
select student.name,avg(choose.score) from
student inner join choose on student.id=choose.sid
where student.id IN
(select choose.sid from choose
where choose.score'60'
group by choose.sid
having count(choose.sid)=2)
gruop by student.id
3.一个联合查询,一个嵌套查询
select student.name from student
where student.id IN
(select c1.sid from choose c1 where choose.cid='1'
union
select c2.sid from choose c2 where choose.cid='2'
on c1.sid=c2.sid
)
4.其实就是自连接查询和行列交换的问题:
select student.id,
(case choose.id when '1' then choose.score end) as 1号课成绩,
(case choose.id when '2' then choose.score end) as 2号课成绩,
from student inner join choose on student.id=choose.sid sc1,
student inner join choose on student.id=choose.sid sc2
where sc1.id='1'
and sc2.id='2'
and sc1.scoresc2.score