您的当前位置:首页正文

实验五 存储过程

来源:华拓网


实 验 五 存储过程的创建与调用

一.实验目的:

了解存储过程的概念和作用,掌握创建存储过程的方法,为后继学习作准备。

二.实验属性:

设计性。

三.实验仪器设备及器材:

装有.NET和SQL Server的电脑。

四.实验要求 程序的主界面

图1.1

1、利用存储过程,给student表添加一条学生信息。 建立存储过程stu_insert

USE [sheng] GO

SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO

ALTER PROCEDURE [dbo].[stu_insert]

@Sno char(10) = 0, @Sname char(10) = 0, @Ssex char(10) = 0, @Sage smallint = 0, @Sdept char(10)=0

AS BEGIN

SET NOCOUNT ON; into Student

values(@Sno,@Sname,@Ssex,@Sage,@Sdept) insert

END

在添加Button上添加时间处理程序

//SqlConnection sqlconn = new SqlConnection(conn); string sno,sname,ssex,sage,sdept; sno=textBox1.Text.ToString(); sname=textBox2.Text.ToString(); ssex=textBox3.Text.ToString(); sage=textBox4.Text.ToString(); sdept=textBox5.Text.ToString(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn;

cmd.CommandText = \"stu_insert\";

cmd.CommandType = CommandType.StoredProcedure; IDataParameter[] parameters = {

new SqlParameter(\"@Sno\", SqlDbType.Char,4), new SqlParameter(\"@Sname\", SqlDbType.Char,4) , new SqlParameter(\"@Ssex\", SqlDbType.Char,10) , new SqlParameter(\"@Sage\", SqlDbType.Int,10) , new SqlParameter(\"@Sdept\", SqlDbType.Char,15) , }; conn.Open();

cmd.Parameters.Add(\"@Sno\", SqlDbType.VarChar).Value = sno; cmd.Parameters.Add(\"@Sname\", SqlDbType.VarChar).Value = sname; cmd.Parameters.Add(\"@Ssex\", SqlDbType.VarChar).Value = ssex; cmd.Parameters.Add(\"@Sage\", SqlDbType.VarChar).Value = sage; cmd.Parameters.Add(\"@Sdept\", SqlDbType.VarChar).Value = sdept; cmd.ExecuteNonQuery().ToString(); conn.Close();

执行结果

图1.2

2、 利用存储过程从student、course、sc表的连接中返回所有学生的学号、姓名、所选课

程及成绩。

编写存储过程returnall

SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO

CREATE PROCEDURE returnall AS BEGIN

SET NOCOUNT ON;

SELECT Student.Sno,Sname,Cname,Grade from SC,Student,Course

where SC.Cno=Course.Cno and Student.Sno=SC.Sno END GO

在所有信息Button上添加时间处理程序

string str;

SqlConnection conn = new SqlConnection(\"Data

Source=PC-20130426QCUZ\\\\SHENG;Initial Catalog=zhongxing;Integrated Security=True\");

SqlCommand cmd = new SqlCommand(\"returnall\", conn); cmd.CommandType = CommandType.StoredProcedure; DataSet myds=new DataSet();

SqlDataAdapter adapt=new SqlDataAdapter(cmd); adapt.Fill(myds,\"Student\");

DataGridView mydatagrip=dataGridView2;

mydatagrip.DataSource=myds.Tables[0].DefaultView; mydatagrip.Refresh(); myds=null;

adapt=null; cmd.Dispose(); conn.Dispose();

执行结果

图1.3

3、 用存储过程查找“刘刚”的学号、所选课程、成绩。

SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO

CREATE PROCEDURE liugang AS BEGIN

SET NOCOUNT ON;

SELECT Student.Sno,Cname,Grade from Student,SC,Course

where Student.Sno=SC.Sno and SC.Cno=Course.Cno and

Student.Sname='刘刚' END GO

在刘刚Button上添加时间处理程序

{string str;

SqlConnection conn = new SqlConnection(\"Data

Source=PC-20130426QCUZ\\\\SHENG;Initial Catalog=zhongxing;Integrated Security=True\");

SqlCommand cmd = new SqlCommand(\"liugang\", conn); cmd.CommandType = CommandType.StoredProcedure; DataSet myds = new DataSet();

SqlDataAdapter adapt = new SqlDataAdapter(cmd); adapt.Fill(myds, \"Student\");

DataGridView mydatagrip = dataGridView2;

mydatagrip.DataSource = myds.Tables[0].DefaultView; mydatagrip.Refresh();

myds = null; adapt = null; cmd.Dispose(); conn.Dispose();

} 执行结果

图1.4

4、 用存储过程查找姓“李”并且性别为“男”的学生的学号、所选课程、成绩。

SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO

CREATE PROCEDURE linan4 AS BEGIN

SET NOCOUNT ON;

SELECT Student.Sno,Cname,Grade from Student,Course,SC

where Student.Sno=SC.Sno and SC.Cno=Course.Cno and Sname like '李%' and Ssex='男' END GO

在李_男Button上添加时间处理程序 { string str;

SqlConnection conn = new SqlConnection(\"Data

Source=PC-20130426QCUZ\\\\SHENG;Initial Catalog=zhongxing;Integrated Security=True\");

SqlCommand cmd = new SqlCommand(\"linan4\", conn); cmd.CommandType = CommandType.StoredProcedure; DataSet myds = new DataSet();

SqlDataAdapter adapt = new SqlDataAdapter(cmd); adapt.Fill(myds, \"Student\");

DataGridView mydatagrip = dataGridView2;

mydatagrip.DataSource = myds.Tables[0].DefaultView; mydatagrip.Refresh(); myds = null; adapt = null; cmd.Dispose(); conn.Dispose(); }

执行结果

图1.5

5、 利用存储过程计算出平均成绩大于k分(0USE [sheng] GO

SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO

ALTER PROCEDURE [dbo].[grade05] AS BEGIN

SET NOCOUNT ON;

select Student.Sno,Sname from Student where sno in

(select sno from sc group by sno having avg(grade)>@out) @p1 int = 0, @out int=@p1

END

在查询Button上添加事件处理程序 {

string avg;

avg = textBox6.Text.ToString();

if (textBox6.Text.Trim() == string.Empty) {

MessageBox.Show(\"请?输º?入¨?数ºy据Y啊ã?\");

return; }

SqlConnection conn = new SqlConnection(\"Data

Source=PC-20130426QCUZ\\\\SHENG;Initial Catalog=zhongxing;Integrated Security=True\");

SqlCommand cmd = new SqlCommand(\"grade05\", conn); cmd.CommandType = CommandType.StoredProcedure; conn.Open();

cmd.Parameters.Add(\"@out\", SqlDbType.Int).Value = avg; cmd.ExecuteNonQuery().ToString(); DataSet myds = new DataSet();

SqlDataAdapter adapt = new SqlDataAdapter(cmd); adapt.Fill(myds, \"Student\");

DataGridView mydatagrip = dataGridView2;

mydatagrip.DataSource = myds.Tables[0].DefaultView; mydatagrip.Refresh(); myds = null; adapt = null; cmd.Dispose(); conn.Dispose();

}

执行结果

图1.6

图1.7

五 心得和体会

转眼间一学期对数据库的要结束了。 经过一个学期的数据库课程的学习,我们掌握了创建数据库以及对数据库的操作的基础知识。数据库这门课涉及到以前的知识不多,是一门从头学起的课程,即使基础不是很好,只要认真听讲、复习功课,还是一门比较容易掌握的课。

课堂上讲的知识比较理论化,如果不动手就无法将知识转化为技能,而动手去做能够让我们将学过的知识在实践中运用,找到知识漏洞,并且能学到更多关于实际操作的知识和技巧。并且培养了我们的自学能力。

第一次接触sql语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学得很好。刚开始练习sql语言的时候,并不是很难,基本上都是按照老师的步骤来做,还很有成就感。我们通过老师的一些ppt,我们可以巩固课内的知识,还可以学习内容相关的知识,更好地完成老师布置的作业。

在这学期中我们主要学习的数据库是SQL server,在学习的时候过程中,我们首先是从基础开始,比如关系代数、关键字等等,然后上升到一些增删改查,还有触发、存储过程等的使用等等。

经过了一学期的学习,我从起初对数据库的认识模糊到后来清晰,深入,我认为我学到了许许多多的东西。在学习中,高艳霞老师在课堂上做了大量的例子,让枯燥的数据库的学习变得生动起来。同时她也会建议我们课下多加练习。我在学习数据库课程过程中,接触到的软件工程思想,网上学习经验,以及利用网络的学习资源都很好的改善了我的学习。后来,在学习的深入中,虽然学习有时是十分叫人感到枯燥乏味的,但我庆幸的是我坚持了下来,是啊!要想学好一门功课我们需要的是持之以恒的精神。

数据库编程,这个是作为一个程序员的基本功,绝大多数软件开发公司数据库编程都是由程序员自己完成的,因为他的工作量不是很大,也不是很复杂。所以作为一个综合的程序员,学习数据库编程,像数据库四大操作,增删改查,还有触发、存储过程等的使用,这些都是基础的基础。扎实的掌握每个知识点。

从事计算机行业,就需要学习好数据库的基础知识,不论以后选择哪个方向,数据库的学习都不能放松。古人云:书到用时方恨少,知识学多了不会成为累赘,慢慢的积累,总有用到的时候。给自己明确一个目标,剩下的就是向着这个目标努力,无论遇到什么困难,克服它就向成功迈进了一步。

虽然这门课快要结束了,但是我对数据库的学习永无止境!

因篇幅问题不能全部显示,请点此查看更多更全内容