网管联盟 | 网管论坛 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 俱乐部 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > windows > 服务器技术 > SQL服务器 > SQL存储过程在.NET数据库中的应用(2)  

SQL存储过程在.NET数据库中的应用(2) 评论 论坛

2003-08-17   作者:网管联盟整理   来源:中国网管联盟   PV:

关键词:数据库 应用 过程 存储 对象 数据 属性 方法 应用程序


  五.创建简单存储过程的数据库应用程序:
  
  下面我们就运用上述的不带参数的存储过程来一个数据库应用程序,其中还用到了ADO.NET中的SqlDataAdapter对象以及DataSet对象。其中的SqlDataAdapter对象作为SQL Server数据库和DataSet对象的桥梁将两者联系在一起。SqlDataAdapter对象包含了两个常用的方法:Fill()方法和Update()方法。其中的Fill()方法能从数据库中获取相应数据并填充到DataSet对象中,而Update()方法顾名思义就是更新数据集的意思了。在调用Fill()方法以前,我们必须设置好SqlDataAdapter对象的SelectCommand属性,该属性其实是一个SqlCommand对象。SelectCommand属性中包含有效的SQL语句,并能据此从数据库中获取相应数据并填充到DataSet对象中。
  
  首先,我们创建一个Windows Forms应用程序,编程语言为C#。在Visual Studio.NET中创建一个新的项目后,给该项目添加一个新的类-Publishers类,该类封装了连接到后台数据库并获取数据集对象的业务逻辑。步骤如下:
BBS.bitsCN.com网管论坛

  
  1.添加必要的命名空间引用:using System.Data.SqlClient;
  
  2.给该类添加如下一些必要的变量:
   
  3.在该类的构造函数中完成连接后台数据库,获取SqlDataAdapter对象等业务逻辑:
   
  4.最后为该类提供一个GetPublisherInfo()方法,该方法用SqlDataAdapter对象填充DataSet对象并返回填充后的DataSet对象,方法如下(值得注意的是:SqlDataAdapter对象会隐式地打开数据库连接并在获取数据后隐式地关闭连接,这就是说DataSet对象是工作在非连接模式下的。而当你显式地打开数据库连接并获取数据后,SqlDataAdapter对象并不会将该连接关闭):
   
  完成Publishers类的设计后,我们给主窗体添加一个DataGrid控件并用它来显示DataSet对象中的数据。首先给主窗体类添加如下成员变量:
    bitsCN#com中国网管联盟
  这样该应用程序一启动主窗体的DataGrid控件中便显示了运用上述不带参数的存储过程从Pubs数据库中获取的相应数据,程序运行图示如下:
   
  六.创建带参数的存储过程的数据库应用程序:
  
  上面我们创建了一个不带参数的存储过程的应用程序,下面我们就来创建一个更加复杂的数据库应用程序。在实际的数据库应用中,我们往往需要获取数据并更新、插入或删除数据,这时我们就需要用到带有参数的存储过程了,同时在运用SqlDataAdapter对象时,我们会调用它的Update()方法。该Update()方法会自动根据DataSet对象中的DataTable对象内各条记录的变化情况完成相应操作。SqlDataAdapter对象还包含了UpdateCommand、InsertCommand、DeleteCommand等属性,这些属性其实都是SqlCommand对象。Update()方法会根据操作的类型选用相应的属性。
  
  在运用带有参数的存储过程建立数据库应用程序时,我们一般都要用到SqlParameter类,该类封装了各种与Sql参数相关的属性和方法。其中的属性包括了ParameterName,SqlDBType,Direction,Size,Value,SourceColumn以及SourceVersion等。其中ParameterName,SqlDBType,Direction,Size等属性是用于匹配存储过程中定义的参数的。比如下面定义的SqlParameter对象就是用来匹配前面定义的up_UpdatePublisherInfo存储过程中的“@pub_id”参数的。

[bitsCN_com]


  
  SqlParameter updParam = new SqlParameter( "@pub_id", SqlDbType.Char, 4 );
  
  在上面的定义中,虽然Direction属性没有明确地给出,但是它的默认值为Input,所以也就满足了我们的需要。而如果一个SqlParameter对象的Direction属性为InputOutput或Output或ReturnValue,那么其Direction属性就必须明确地说明了,比如下面的代码就明确地声明了一个SqlParameter对象的Direction属性为Output。
  
  oParam.Direction = ParameterDirection.Output;
  
  其中的SourceColumn属性是用于匹配一个DataTable对象中的DataColumn对象的,这种匹配能在调用Update()方法更新DataTable对象时隐式地导入所需的SqlParameter对象。如果在定义时没有声明该属性,那么你必须在代码中显式地说明SqlParameter对象的SourceColumn属性。
  
  其中的SourceVersion属性的默认值是DataRow对象相应字段中的当前值,也就是要更新到数据库中的值。当然,SourceVersion属性也可以指向DataRow对象相应字段中的原始值,也即从数据库中获取的初始值。在数据库事务处理系统中,数据的同步性问题非常重要,下面我们来建立一个能检测数据同步性的存储过程。

BBS.bitsCN.com网管论坛


   
  接着,我们在上面的应用程序中调用该存储过程以更新发行商的名称。首先,在原有应用程序的基础上完善其业务逻辑类-Publishers类:
   
  应用程序的业务逻辑类完善之后,在主窗体上添加一个名为“更新数据集”的按钮,并添加该按钮的事件响应函数如下:
   
  到此为止,应用程序的业务逻辑类和主窗体类都已经更新完毕,现在的应用程序能根据用户的改用更新数据库中的相关内容了。运行程序如图5所示,你在更新了数据后还可以打开SQL Server中的相应表并验证数据有没有更新成功。
  
  七.总结:
  
  本文向大家介绍了存储过程的基本知识以及在.NET数据库应用程序中如何结合SqlDataAdapter对象、DataSet对象等构建数据驱动的应用程序。在本文中,我们运用到了两类存储过程:一类为简单的不带参数的存储过程,其运用方法相对容易;另一类为带有参数的存储过程,在调用该类存储过程时还得运用到SqlParameter对象。同时,我们不难发现将数据更新业务逻辑封装在存储过程中是一种很好的设计方法,它能提高应用程序的可管理性、可扩展性以及数据库的安全性。类似的,插入数据以及删除数据的业务逻辑也可以封装在存储过程中并以相似的方法在应用程序中被运用。最后,希望本文对大家有不少帮助。 bitsCN#com中国网管联盟
  
  源代码文件下载:StoredProc.zip
  

  

收藏本文】 【推荐好友】 【欢迎投稿】 【打印本文
上一篇:SQL Serer --- 索引全攻略   下一篇:SQL存储过程在.NET数据库中的应用(1)
 相关文章:
·SQL Serer --- 索引全攻略 ·SQL存储过程在.NET数据库中的应用(1)
·用ASP+SQL Server为网页建一道防火墙 ·SQL Server到Oracle连接服务器的实现
·SQL Server 2000新特性:bigint数据类型 ·用SQL Mail创建日常报告
SQL存储过程在.NET数据库中的应用(2) 评论:
    评论加载中…
  
  责任编辑:网盟  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
 
本类热门排行:
1.部署 Microsoft SQL Serv
2.通用SQL数据库查询语句精华使用简介
3.SQL入门:创建表
4.安装指南:SQL Server 2005安装及界面
5.在SQL Server 2000查询分析器里面收缩数
6.如何远程连接局域网内的sql server
7.SQL Server的数据类型介绍
8.剖析SQL Server 2005查询通知之基础篇
9.SQL Server定期自动备份
10.SQL Server 2005:数据类型最
最新推荐文章:
1.关于SQL Server中索引使用及维护简介
2.SQL Server数据在不同数据库中的应用
3.教你如何在SQL Server计算列和平均值
4.SQL Server 2005 - 实作CLR存储过程
5.部署 Microsoft SQL Server 2005 群集
6.SQL Server 2005与DB2 8.2之对比
7.专家谈SQL Server 2005 CLR
8.SQL Server 2005:向系统表说再见(图)
9.保护SQL服务器的安全-用户识别问题
10.如何应用SQL Server中的DBCC避免堵塞
本类最新文章:
1.50种方法巧妙优化SQL Server数据库
2.在SQL Server中使用CLR调用.NET方法
3.比较SQL Server约束和DML触发器
4.向外扩展SQL Server 实现更高扩展性
5.SQL Server 查询分析器快捷键集合
6.用SQL Server 2005同义字缩短开发时间
7.关于SQL Server中索引使用及维护简介
8.SQL Server数据在不同数据库中的应用
9.SQL Server如何访问sybase数据库的表
10.动态创建MSSQL数据库表存储过程
网管论坛交流:
·情人节快乐
·版主其实很辛苦(献给中国网管论坛所有版
·下雪了(精华哈)
·流量控制/限速讨论专贴(随时整理+更新
·经过了试用期,我自己写的述职报告!有用
·转网络中最美丽的行为
·过年了,早点回家看看爹娘
·图文并茂教你组建磁盘阵列
·计算机日常清洁维护方法
·郁闷啊,服务器修好了,可是……