• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

在ASP.NET中调用存储过程方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
两种不同的存储过程调用方法

为了突出新方法的优点,首先介绍一下在.NET中调用存储过程的“官方”方法。另外,本文的所有示例程序均工作于SqlServer数据库上,其它情况类似,以后不再一一说明。本文所有例子均采用C#语言。

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

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

(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;

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

(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;


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

两种调用方法的比较

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

 

 转自:http://www.cnblogs.com/wengyuli/archive/2008/06/05/1214003.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.NetCore3.1返回JsonResult时时间格式处理发布时间:2022-07-10
下一篇:
ASP.NET使用Request获取来源网址URL参数发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap