存储过程更新操作

上传人:ni****g 文档编号:499394121 上传时间:2023-09-03 格式:DOCX 页数:13 大小:107.67KB
返回 下载 相关 举报
存储过程更新操作_第1页
第1页 / 共13页
存储过程更新操作_第2页
第2页 / 共13页
存储过程更新操作_第3页
第3页 / 共13页
存储过程更新操作_第4页
第4页 / 共13页
存储过程更新操作_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《存储过程更新操作》由会员分享,可在线阅读,更多相关《存储过程更新操作(13页珍藏版)》请在金锄头文库上搜索。

1、一前言:存储过程(St or ed Pr ocedu re)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库 中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库 中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。总的来说,存储过程具有 以下一些优点:存储过程允许标准组件式编程。存储过程能够实现较快的执行速度。存储过程能够减少网络流量。存储过程可被作为一种安全机制来充分利用。本文作者将向大家介绍.NET数据库应用程序中存储过程的应用,以及如何将它与ADO.NET中的 SqlDataAdapter对象、DataSet对象等结合

2、使用以提高.NET数据库应用程序的总体性能。二系统要求:开发工具:Visual Studio.NET数据库管理系统:SQL Server 2000 (其中包含了示例程序所用到的Pubs数据库) 三创建一个简单的存储过程:这里我将向大家介绍如何运用Visual Studio.NET IDE来创建存储过程。运用Visual Studio.NET IDE创建存储过程是非常容易和直观的,你只要在服务器资源管理器中导向到Pubs数据库并展开节点, 就会发现包括存储过程在内的各种数据库对象。在存储过程节点上点击右键便可弹出一个菜单,其中包含了“新建存储过程”的命令。新建一个存储过 程后, IDE 中的代码

3、编辑窗口便出现如下所示的代码模板: RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION FOR REPLICATION AS sql_statement .n 限于篇幅,各个参数的含义在此就不多作介绍了,有兴趣的读者可以参考有关SQL Server 2000 数据库管理系统的资料。下面我对该代码模板中的各个语法成分略作介绍。CREATE PROCEDURE声明创建一个存储过程, 后面跟着该存储过程的名称。7*/”中的成分是该存储过程的参数,可包括输入参数和输出参数。AS 关键字后面的内容是该存储过程的主体部分,其中是任何数量和类型的包含在存储过程中的

4、SQL语句。 RETURN 关键字表明存储过程结束并能返回整型状态值给调用者。下面我们就来创建一个简单的不带参数 的存储过程并运用之:CREATE PROCEDURE dbo.up_GetPublisherInfoASSELECT pub_id, pub_name, city, state, cou ntryFROM publishersRETURN创建以上存储过程后,保存之。保存完毕,与该存储过程相对应的节点就会出现在服务器资源管理 器中。同时请注意代码编辑窗口中的CREATE关键字变为ALTER关键字了,该关键字是用于更改任何现 有的存储过程的。要运行上述存储过程,只要点击其节点并在右键弹

5、出菜单中选择 运行存储过程”。四创建一个带参数的存储过程: 以上我们创建了一个简单的不带参数的存储过程,而在实际的应用中往往会用到很多带有参数的存 储过程。带有参数的存储过程一般是用于更新数据或是插入数据的。下面我们可以运用同样的操作方法创 建一个带参数的存储过程:CREATE PROCEDURE dbo.up_UpdatePublisherInfo在上面的创建存储过程的代码中,我们通过在名称前添加一个“”标志来声明存储过程的局部变量 参数,同时还声明了各个参数的类型,确定了各个参数的方向值,也即表明该参数是输入型的还是输出型 的或者是输入输出型的或者是返回值型的。用户通过相应的存储过程名称以

6、及正确有效的参数便可调用该 存储过程了。还有,你可以通过运用OUTPUT关键字在参数中添加输出型的参数,具体方法请参考上面的 语法规则。输出型的参数能返回给调用者相关的信息。上面的存储过程能更新 publishers 表中相应出版商的信息。你可以通过点击该存储过程的节点,在 右键弹出菜单中选择“运行存储过程”来执行它。一旦执行, IDE 中便弹出一个输入出版商信息的对话框。 在该对话框中填入正确有效的更新信息,注意 pub_id 的值在原来的表中必须存在,然后点击“确定”按钮 便可更新数据了。五创建简单存储过程的数据库应用程序:下面我们就运用上述的不带参数的存储过程来一个数据库应用程序,其中还

7、用到了 ADO.NET中的 SqlDataAdapter对象以及DataSet对象。其中的SqlDataAdapter对象作为SQL Server数据库和 DataSet对象的桥梁将两者联系在一起。SqlDataAdapter对象包含了两个常用的方法:Fill ()方法和 Update ()方法。其中的Fill ()方法能从数据库中获取相应数据并填充到DataSet对象中,而Update ()方法顾名思义就是更新数据集的意思了。在调用Fill()方法以前,我们必须设置好SqlDataAdapter 对象的SelectCommand属性,该属性其实是一个SqlCommand对象。SelectCo

8、mmand属性中包含 有效的SQL语句,并能据此从数据库中获取相应数据并填充到DataSet对象中。首先,我们创建一个Windows Forms应用程序,编程语言为C#。在Visual Studio.NET中创建 一个新的项目后,给该项目添加一个新的类一Publishe rs类,该类封装了连接到后台数据库并获取数据集 对象的业务逻辑。步骤如下:1添加必要的命名空间引用: using System.Data.SqlClient;2给该类添加如下一些必要的变量:private SqlConnection cnPubs;private SqlCommand cmdPubs;private SqlDa

9、taAdapter daPubs;private DataSet dsPubs;3在该类的构造函数中完成连接后台数据库,获取SqlDataAdapter对象等业务逻辑:public Publishers。try/创建一个数据库连接对象 cnPubs = new SqlConnection(server=localhost;integrated security二true;database二pubs);/创建一个SqlCommand对象,并指明其命令类型为存储 过程cmdPubs = new SqlCommandO;cmdPubs.Connection 二 cnPubs;cmdPubs.Comm

10、andType = CommandType.StoredProcedure;cmdPubs.CommandText 二up_GetPublisherlnfo;设定其/ 创建一个 SqlDataAdapter 对象,SelectCommand属性为上面的SqlCommand对象 daPubs = new SqlDataAdapter();daPubs.SelectCommand = cmdPubs;/创建一个DataSet对象 dsPubs = new Dat aSe t();catch( Exception ) 4.最后为该类提供一个GetPublisherlnfo()方法,该方法用SqlDa

11、taAdapter对象填充DataSet对象并返回填充后的DataSet对象,方法如下(值得注意的是:SqlDataAdapter对象会隐式地打开数 据库连接并在获取数据后隐式地关闭连接,这就是说DataSet对象是工作在非连接模式下的。而当你显式 地打开数据库连接并获取数据后,SqlDataAdapter对象并不会将该连接关闭):public DataSet GetPublisherInfo()/调用SqlDataAdapter对象的Fill ()方法并返回数 据集对象 daPubs.Fill( dsPubs );return dsPubs;完成Publishers类的设计后,我们给主窗体添

12、加一个DataGrid控件并用它来显示DataSet对象中的数据。首先给主窗体类添加如下成员变量:/ Windows窗体设计器支持所必需的/Initi alizeCompone nt();/ TODO:在InitializeComponent调用后添加任何构 造函数代码/ pubs = new Publishers。; ds = pubs.Ge tPublisherInfo();dat aGridl.Da taSource = ds.Tables0;这样该应用程序一启动主窗体的DataG rid控件中便显示了运用上述不带参数的存储过程从Pubs数 据库中获取的相应数据。六创建带参数的存储过程的

13、数据库应用程序上面我们创建了一个不带参数的存储过程的应用程序,下面我们就来创建一个更加复杂的数据库应 用程序。在实际的数据库应用中,我们往往需要获取数据并更新、插入或删除数据,这时我们就需要用到 带有参数的存储过程了,同时在运用SqlDataAdapter对象时,我们会调用它的Update ()方法。该 Update ()方法会自动根据DataSet对象中的DataTable对象内各条记录的变化情况完成相应操作。SqlDataAdapter 对象还包含了 UpdateCommand、InsertCommand、DeleteCommand 等属性, 这些属性其实都是SqlCommand对象。Up

14、date ()方法会根据操作的类型选用相应的属性。在运用带有参数的存储过程建立数据库应用程序时,我们一般都要用到 SqlParameter 类,该类封 装了各种与Sql参数相关的属性和方法。其中的属性包括了 Par amete rName, SqlDBType,Dir ection, Size,Value,SourceColumn 以及 SourceVersion 等。其中 ParameterName,SqlDBType, Direction. Size等属性是用于匹配存储过程中定义的参数的。比如下面定义的SqlParameter对象就是用来匹配前面 定义的up_UpdatePublisher

15、lnfo存储过程中的“pub_id”参数的。SqlParameter updParam = new SqlParameter( pub_id, SqlDbType.Char, 4 );在上面的定义中,虽然Dir ection属性没有明确地给出,但是它的默认值为Input,所以也就满足了 我们的需要。而如果一个SqlParameter对象的Direction属性为InputOutput或Output或 Retu rnValue,那么其Dir ection属性就必须明确地说明了,比如下面的代码就明确地声明了一个 SqlParameter 对象的 Direction 属性为 Output。oParam.Direction = ParameterDirection.Output;其中的SourceColumn属性是用于匹配一个DataTable对象中的DataColumn对象的,这种匹 配能在调用Update ()方法更新DataTable对象时隐式地导入所需的SqlParameter对象。如果在定 义时没有声明该属性,那么你必须在代码中显式地说明SqlParameter对象的SourceColumn属性。其中的 SourceVersion 属性的默认值是 DataRow 对象相应字段中的当前值,也就是要更新到数据 库中的值。当然,Source

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

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