ASP.NET程序设计实用技术教学课件王凤岭第10章节

上传人:E**** 文档编号:90570618 上传时间:2019-06-13 格式:PPT 页数:26 大小:105.50KB
返回 下载 相关 举报
ASP.NET程序设计实用技术教学课件王凤岭第10章节_第1页
第1页 / 共26页
ASP.NET程序设计实用技术教学课件王凤岭第10章节_第2页
第2页 / 共26页
ASP.NET程序设计实用技术教学课件王凤岭第10章节_第3页
第3页 / 共26页
ASP.NET程序设计实用技术教学课件王凤岭第10章节_第4页
第4页 / 共26页
ASP.NET程序设计实用技术教学课件王凤岭第10章节_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《ASP.NET程序设计实用技术教学课件王凤岭第10章节》由会员分享,可在线阅读,更多相关《ASP.NET程序设计实用技术教学课件王凤岭第10章节(26页珍藏版)》请在金锄头文库上搜索。

1、第10章 在ADO.NET中 使用存储过程,10.1 存储过程概述,存储过程是一些SQL语句和控制语句的集合,它有一个名称,并经过预编译作为一个独立的单元存储在数据库内。应用程序可以通过一个调用来执行存储过程。,存储过程可以简单到只有一个单一的SELECT语句,也可以包含多个执行复杂计算和更新许多表的语句。用户可以在存储过程中声明变量,完成复杂的编程功能,还可以根据输入参数的不同,有条件地执行。,使用存储过程的原因 (1)存储过程执行起来比SQL命令文本快得多。 (2)为应用程序提供更大的灵活性 (3)可以在存储过程中利用Transact-SQL的强大功能。 (4)减少网络数据量 (5)模块化

2、 (6)增强数据库的安全性,10.2 创建存储过程,CREATE Procedure 存储过程名 参数名 数据类型 AS 要执行的SQL命令 可以在存储过程中声明一个或多个参数,也可以不带参数。 与其他编程语言中的过程所带的参数不同的是,存储过程所带的参数都必须以符号开头。,CREATE Procedure GetAllStudentsProc AS SELECT * FROM tblStudents CREATE Procedure GetOneStudentProc (stuid char(8) ) AS SELECT * FROM tblStudents WHERE StudentID=

3、stuid,实例1 调用存储过程创建数据表,CREATE PROCEDURE dbo.CreateOneTestTable AS create table TestTable1 ( a varchar(1), b int ) RETURN,Dim conn As New SqlConnection(“Server=(local);Database=forteaching;User ID=sa;Password=;“) Dim cmd As New SqlCommand cmd.Connection = conn cmd.CommandType = CommandType.StoredProce

4、dure cmd.CommandText = “CreateOneTestTable“ conn.Open() cmd.ExecuteNonQuery() conn.Close(),10.3 调用存储过程,在ADO.NET中调用存储过程其实跟执行SQL命令差不多。主要差别在于: Command对象.Connection = 连接对象名 Command对象.CommandText = 存储过程名 Command对象.CommandType = CommandType.StoredProcedure,执行存储过程时所调用的方法随存储过程的类型不同而有所区别: 返回记录的存储过程 返回值的存储过程

5、执行功能的存储过程,实例2 调用存储过程查询数据,CREATE PROCEDURE dbo.SelectOneTable AS select * from StuInfo RETURN,(运用DataReader),Dim conn As New SqlConnection(“Server=(local);Database=forteaching;User ID=sa;Password=;“) Dim cmd As New SqlCommand cmd.Connection = conn cmd.CommandType = CommandType.StoredProcedure cmd.Com

6、mandText = “SelectOneTable“ Dim dr As SqlDataReader conn.Open() dr = cmd.ExecuteReader() DataGrid1.DataSource = dr DataGrid1.DataBind() dr.Close() conn.Close(),(运用DataAdapter),Dim conn As New SqlConnection(“Server=(local);Database=forteaching;User ID=sa;Password=;“) Dim cmd As New SqlCommand cmd.Con

7、nection = conn cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = “SelectOneTable“ Dim ds As New DataSet Dim da As New SqlDataAdapter(cmd) conn.Open() da.Fill(ds, “mytable“) conn.Close() DataGrid1.DataSource = ds.Tables(“mytable“) DataGrid1.DataBind(),10.4 将参数传递到存储过程中,参数用于在存储过程和调用存储过程的应

8、用程序或工具之间交换数据。输入参数允许调用方将数据值传递到存储过程。 例如,如果存储过程是条件查询,可以将条件值定义为输入参数,然后在调用存储过程时给参数赋值。,10.4.1 SQL变量,SQL变量由DECLARE语句进行声明,对于SQL Server数据库来说,完整的语法是: DECLARE SQL变量名 AS 数据类型 所有SQL变量名的前面都必须添加符号才有效,全局变量则采用来标注。 数据类型必须是SQL Server数据类型,10.4.2 从Web页面向存储过程传递参数,ADO.NET执行带参数的存储过程之前,需要将参数值传递给存储过程。 这个工作通过SqlParameter类来完成。

9、,SqlParameter类的主要属性,在ADO.NET应用程序中,一个SqlParameter类的实例对应一个存储过程参数。 例如,存储过程有3个参数,调用时需要创建3个SqlParameter对象用于传递参数值。 向存储过程传递参数示例(P236),实例3 向存储过程传递参数,CREATE PROCEDURE dbo.StoredProcedure1 ( inputName varchar(10), inputClassName varchar(30) ) AS insert into StuInfo(Name,ClassName) values(inputName,inputClassN

10、ame) RETURN,Dim conn As New SqlConnection(“Server=(local);Database=forteaching;User ID=sa;Password=;“) Dim cmd As New SqlCommand cmd.Connection = conn cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = “inputPara“ cmd.Parameters.Add(“inputName“, TextBox1.Text) cmd.Parameters.Add(“inputC

11、lassName“, TextBox2.Text) conn.Open() cmd.ExecuteNonQuery() conn.Close(),关于参数SqlParameter对象,SqlParameter是用于定义SQL参数的对象。例如,向存储过程传递参数inputName: Dim objParameter As New SqlParameter (“inputName”, SqlDbType.VarChar, 10) objParameter.Value = TextBox1.Text cmd.Parameters.Add(objParameter) 但为了简化程序,我们可以像前面所讲

12、的示例一样省略定义SqlParameter对象的操作: cmd.Parameters.Add(“inputName“, TextBox1.Text),10.5 存储过程输出参数,使用输出参数,可以使存储过程返回多个值。如果只是查找某个值而不是所有结果,那么输出参数就可以派上用场。 程序示例(P240),从存储过程获得参数输出值,情况如下语句 cmd.Parameters.Add(“inputName“, TextBox1.Text) 默认情况下,参数inputName是一个传输方向为“输入”的参数。 如果我们有这样一个参数 cmd.Parameters.Add(“outID“, SqlDbTy

13、pe.BigInt) 默认情况下,它同样是一个输入参数,我们可以通过改变它的.Direction属性使它的传输方向为“输出”: cmd.Parameters(“outputID“).Direction = ParameterDirection.Output 数据库系统存储过程参数列表当中,输出参数一定要有OUTPUT标记。,CREATE PROCEDURE dbo.outputPara ( inputName varchar(10), inputClassName varchar(30), outputID bigint OUTPUT ) AS select outputID=id from

14、StuInfo where Name=inputName and ClassName=inputClassName RETURN,Dim conn As New SqlConnection(“Server=(local);Database=forteaching;User ID=sa;Password=;“) Dim cmd As New SqlCommand cmd.Connection = conn cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = “outputPara“ cmd.Parameters.Add(

15、“inputName“, TextBox1.Text) cmd.Parameters.Add(“inputClassName“, TextBox2.Text) cmd.Parameters.Add(“outputID“, SqlDbType.BigInt) cmd.Parameters(“outputID“).Direction = ParameterDirection.Output 须为参数outputID的传输方向为输出方向 conn.Open() cmd.ExecuteNonQuery() TextBox3.Text = cmd.Parameters(“outputID“).Value conn.Close(),思考与练习,1什么是存储过程?使用存储过程有什么好处? 2在没有SQL查询分析器和企业管理器的情况下,如何创建和修改存储过程? 3在ADO.NET中调用存储过程与执行SQL命令文本的方法区别在什么地方? 4从Web页面向存储过程传递参数,需要用到ADO.NET的哪个类?该类有哪些主要属性?,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号