如何开发一个学生成绩管理糸统(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
到这里专业表的查询也完成了。
基于数据集的基本查询到这里就完成了。
在下一节中我将开始写关于验证进行数据集的查询
由于这是我的第一次发文章,有什么写的不好的,请大家多多指教。