浅析ASP.NET中两种调用存储过程的方法


关于ASP.NET中调用存储过程的方法,这里为了突出新方法的优点,首先介绍一下在.NET中调用存储过程的“官方”方法。注:本文所有示例运行的环境为C#+SqlServer数据库。

  要在应用程序中访问数据库,一般性的步骤是:首先声明一个数据库连接SqlConnection,然后声明一个数据库命令SqlCommand,用来执行SQL语句和存储过程。有了这两个对象后,就可以根据自己的需要采用不同的执行方式达到目的。需要补充的是,不要忘记在页面上添加如下的引用语句:using System.Data.SqlClient。

  就执行存储过程来说,如果执行的是第一类存储过程,那么就要用一个DataAdapter将结果填充到一个DataSet中,然后就可以使用数据网格控件将结果呈现在页面上了;如果执行的是第二和第三种存储过程,则不需要此过程,只需要根据特定的返回判定操作是否成功完成即可。

  ASP.NET调用存储过程(1)执行一个没有参数的存储过程的代码如下:

  SqlConnection conn=new SqlConnection(“connectionString”);

  SqlDataAdapter da = new SqlDataAdapter();

  da.SelectCommand = new SqlCommand();

  da.SelectCommand.Connection = conn;

  da.SelectCommand.CommandText = "NameOfProcedure";

  da.SelectCommand.CommandType = CommandType.StoredProcedure;

  然后只要选择适当的方式执行此处过程,用于不同的目的即可。

  ASP.NET调用存储过程(2)执行一个有参数的存储过程的代码如下(我们可以将调用存储过程的函数声明为ExeProcedure(string inputdate)):

  SqlConnection conn=new SqlConnection(“connectionString”);

  SqlDataAdapter da = new SqlDataAdapter();

  da.SelectCommand = new SqlCommand();

  da.SelectCommand.Connection = conn;

  da.SelectCommand.CommandText = "NameOfProcedure";

  da.SelectCommand.CommandType = CommandType.StoredProcedure;

  (以上代码相同,以下为要添加的代码)

  param = new SqlParameter("@ParameterName", SqlDbType.DateTime);

  param.Direction = ParameterDirection.Input;

  param.Value = Convert.ToDateTime(inputdate);

  da.SelectCommand.Parameters.Add(param);

  这样就添加了一个输入参数。若需要添加输出参数:

  param = new SqlParameter("@ParameterName", SqlDbType.DateTime);

  param.Direction = ParameterDirection.Output;

  param.Value = Convert.ToDateTime(inputdate);

  da.SelectCommand.Parameters.Add(param);

  若要获得参储过程的返回值:

  param = new SqlParameter("@ParameterName", SqlDbType.DateTime);

  param.Direction = ParameterDirection.ReturnValue;

  param.Value = Convert.ToDateTime(inputdate);

  da.SelectCommand.Parameters.Add(param);

  从上面的代码我们可以看出,当存储过程比较多或者存储过程的参数比较多时,这种方法会大大影响开发的速度;另外一方面,如果项目比较大,那么这些用于数据库逻辑的函数在以后的维护中也是一个很大的负担。那么,有没有一种改进的方法可以解决这个问题呢?想到在执行没有参数的存储过程时只需要传入一个存储过程的名字就可以调用相应的存储过程,而且在SqlServer数据库中我们可以直接在查询分析器中敲入“存储过程名(参数列表)”样的字符串就可以执行存储过程,那么,是否可以把这种思想应用到应用程序中呢?

  于是在编译器中键入相应代码。这些代码是在调用不带参数的存储过程的代码的基础上改的。具体代码如下:

  SqlConnection conn=new SqlConnection(“connectionString”);

  SqlDataAdapter da = new SqlDataAdapter();

  da.SelectCommand = new SqlCommand();

  da.SelectCommand.Connection = conn;

  da.SelectCommand.CommandText = "NameOfProcedure(’para1’,’para2’,para3)";

  da.SelectCommand.CommandType = CommandType.StoredProcedure;

  为了使代码更具有代表性,要调用的存储过程的第一个和第二个参数都为字符串类型,第三个参数为整型。执行以后发现,完全可以达到预期的效果!

  两种ASP.NET调用存储过程方法的比较

  通过比较我们可以看到,第二种方法具有一个很明显的优点,那就是可以提高开发速度,节省开发时间,而且代码容易维护,在一定程度上也减少了系统大小。但是,由于对存储过程参数的处理比较笼统,如果要获取输出参数或者得到存储过程的返回值,这种方法就不能满足需要了。虽然如此,但是,这种方法毕竟可以让开发人员少些很大一部分的代码。如果不需要获取输出参数和返回值,那么几乎可以做到“一劳永逸”。因此在实际的程序开发中,这种方法还是具有一定的实用价值的。

  ASP.NET调用存储过程两种方法就向你介绍到这里,希望对你有所帮助



相关阅读:
关于DB2 数据库授权的研究
mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结
PHP stream_context_create()作用和用法分析
安全地编写SQLserver扩展存储过程
Windows Server 2003 图解DNS服务安装篇
PHP安全配置
CODEPAGE 列表与asp应用例子
js select 标签选定项的值获取代码
mysql 日期和时间函数
jquery 得到当前页面高度和宽度的两个函数
最优清除浮动的方法
诊断数据库系统性能 Oracle中跟踪sql语句
js中几种去掉字串左右空格的方法
css浏览器不兼容原因分析及解决办法
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 二年级下册音乐《难忘的歌》学案分析 一见钟情作文1000字 背对着太阳也能找到我的幸福-经典散文 小学四年级作文350字:神奇的宝天曼 人生真的不过如此。慢慢走吧,酸甜苦辣总是都要尝一尝的 六月初末 有缘!惜缘! 励志美文一篇 相信自己的明天会更好 2014届高三一轮复习语文(人教版)单元检测:考查范围:必修综合模拟(一)(A卷) 为什么我变的如此冷淡 入党转正鉴定 晨景 浅论真与美的关系 幼儿园2012年秋学园保教工作总结 妈妈再爱我一次作文1500字 一年级100字暑假游公园作文:世纪公园游玩 技能王第五章 别后成累,思念成堆 陆游的诗集 小学第二学期第一个月工作总结-教师工作总结_教师工作总结 xx县向中央部领导的工作汇报 另类经典笑话,五元钱被绑架了 学生会考评部新学期工作计划 小学四年级作文400字:花开花落 晴天变雨天 那一夜我摸了她的乳房 加强宣传思想工作推进和谐社会发展 写名人作文 疯丫头 打雷 图穷匕见的故事 普通话水平测试试题 监狱教导员述职报告 站在青春的纬度上 温瑞安作品妙语哲理警句 《写给生活》作者:张婷婷 感恩老师850字作文:师恩颂 纪律作风保证书 爱的葬礼(一)作文1400字 团结(小作文)作文100字 他,携刻在我的年华里。 学院2015年“五·四”表彰大会讲话稿 外商直接投资与我国产业结构调整 那些事,那些人 3年级自绘清明节小学生手抄报 法院院长述职述廉年度小结汇报 高中高一作文900字:影子的梦 精辟神回复,把你冷出汗 大学生投资顾问毕业实习报告 小学五年级作文1000字:鼓励地掌声

Copyright © 2016 phpStudy |