代码改变世界

如何开发一个学生成绩管理糸统(3)

2010-05-16 15:56  ScriptZhang  阅读(1286)  评论(2编辑  收藏  举报

    续上面文章,我将增加一个连接数据带参数的查询。

SELECT id, cid, cnum, pname, banz
FROM s_class
WHERE (id = @id)

设置方法名GetDataById

基本的数据集的使用查询例子就说到这里了,有什么问题不明白请给我留言,

直接使用来查询数据的话,这样就可以

记得要引入命名空间

首先我将开始在S_course表添加查询

查询1:GetCourseByKid  通过课号查询课程

SELECT id, kid, kname, teacher, term
FROM dbo.s_course
WHERE (kid = @kid)

查询2:GetCourseByKname  通过课名查询课程

SELECT id, kid, kname, teacher, term
FROM dbo.s_course
WHERE (kname = @kname)

查询3:GetCourseByTerm  通过学期查询课程

SELECT id, kid, kname, teacher, term
FROM dbo.s_course
WHERE (term = @term)

由于考虑到课程数据比较多,我使用了存储过程来进行分页,我使用了AspNetPager控件来进行分页,这个控件我觉得相当的好用。

这里有详细的资料http://www.webdiyer.com/Controls/AspNetPager

生成的分页储存过程

CREATE procedure GetCoursePaged
(@startIndex int,
@endIndex int,
@docount bit)
as
set nocount on
if(@docount=1)
select count(*) from s_course
else
begin
declare @indextable table(id int identity(1,1),nid int)
set rowcount @endIndex
insert into @indextable(nid) select id from s_course  order by id asc
select O.id,O.kid,O.kname,O.teacher,O.term from s_course O,@indextable t where O.id=t.nid
and t.id between @startIndex and @endIndex order by t.id
end
set nocount off

为了使用分页查询,我还写了一个查询ScalarCourseNum,查询课程的数量,

SELECT COUNT(*) AS CourseNum
FROM dbo.s_course

因为没有使用关糸表,我只能手动来检测两个表格的数据关糸,

s_course和s_courseinfo是相关的两个表,s_course和s_courseinfo的Id是相同,

还有用3个查询来完成这个工作

查询1:GetIdByKid  通过课号来查询Id

SELECT id
FROM dbo.s_course
WHERE (kid = @kid)

查询2:GetIdByKname 通过课名来查询Id

SELECT id
FROM s_course
WHERE (kname = @kname)

查询3:查询插入数据生成的下一个ID

SELECT  IDENT_CURRENT('s_course')

到这里基于这个表的查询就全部完成了。

 

我再做基于专业表的查询:

基本查询:GetProfById

SELECT id, pid, pname
FROM dbo.s_prof
WHERE (id = @id)

查询1:GetProfByPid  通过专业号查询专业信息

SELECT id, pid, pname
FROM dbo.s_prof
WHERE (pid = @pid)

查询2:GetProfByPname

SELECT id, pid, pname
FROM dbo.s_prof
WHERE (pname = @pname)

分页查询:GetProfPaged

CREATE procedure GetProfPaged
(@startIndex int,
@endIndex int,
@docount bit)
as
set nocount on
if(@docount=1)
select count(*) from s_prof
else
begin
declare @indextable table(id int identity(1,1),nid int)
set rowcount @endIndex
insert into @indextable(nid) select id from s_prof  order by id asc
select * from s_prof O,@indextable t where O.id=t.nid
and t.id between @startIndex and @endIndex order by t.id
end
set nocount off

查询专业数量:ScalarProfNum

SELECT COUNT(*) AS ProfNum
FROM dbo.s_prof

到这里专业表的查询也完成了。

 

基于数据集的基本查询到这里就完成了。

在下一节中我将开始写关于验证进行数据集的查询

 

由于这是我的第一次发文章,有什么写的不好的,请大家多多指教。