存储过程的调用-阿里云开发者社区

开发者社区> 科技小先锋> 正文

存储过程的调用

简介:
+关注继续查看

asp.net中我们经常会和数据库打交道,也就会用到很多sql语句和存储过程,直接使用sql语句会给我们带来一些安全性问题,比如sql注入,存储过程在程序中执行效率高,安全性高,且使用的资源比较少,存储过程建立好以后,实际上已经编译好了且存储在数据库中,而sql语句,写好之后需要先执行再编译,因此比较消耗资源,其以上优势在程序员调用时,可以节省大量时间,给程序员效率的提升,可见在.NET开发中的分量。

   在调用存储过程之前必须要做的是添加引用语句:using system.data.sqlclient,要在程序中访问数据库,一般的步骤是首先声明一个数据库连接SqlConnection,然后声明一个数据库命令SqlCommand,用来执行 SQL语句和存储过程。先看实例:

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;

解释:创建连接对象,实例化适配器对象,达到一些数据并添加到数据集dataset中,命令语句NameOfProcedure就是存储过程名称,命令类型CommandType.StoredProcedure为存储过程,完成调用后就可以与相关表格绑定即可。

2,下面执行的时代参数的存储过程

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;

(与1中的代码完全相同,一下为添加的)

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);

仔细看你会发现这和我们利用sql语句连接数据库时,实行的参数化大致相同,唯一多的就是参数的进出方向即:param.Direction = ParameterDirection.Input;输入方向。首先是new一个参数实例 param 并指明其方向,就是所说的输出输入参数,然后通过转换为param指定值,然后就是把这个param作为参数添加到命令语句中。

通过调用存储过程,可以发现提高了程序员的开发速度,节省了开发时间,对代码的维护更加容易,同时减少系统的大小,提高了执行效率,所以说在现实开发中存储过程的实用价值也是可以肯定的。



本文转自shenzhoulong  51CTO博客,原文链接:http://blog.51cto.com/shenzhoulong/441260,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
OTL调用Oracle存储过程
OTL很早前用过,今天写东西要调存储过程,程序写完了,调试死活通不过,折腾了一早晨。 最后才发现错误,这里总结一下: 1、代码写的不规范。 有个参数后边少写了个“,”以至于总是抱错。而单独写的测试例子就没问题,后来一步一步跟踪了后才发现。
1368 0
JDBC调用存储过程,以及存储过程 事务的使用.....
在JDBC中调用存储过程 首先就要在数据库中存在 要调用的过程  ,存储过程是一组SQL语句的集合,我们吧实现某一功能的 SQL语句集合在一起来使用,方便了用户,不光是这样,存储过程可以预编译,也就是说只要调用了一次存储过程,那么下次在调用存储过程的时候 就不需要进行再次编译了  。
821 0
Spring调用存储过程
public Boolean bindCard(final BindCardProfile bindCardProfile) throws DataAccessException { if (bindCardProfile == null) { return false; } String dbRetu
1123 0
dedecms利用addfields body在首页调用文章内容
  开源程序比较好的一点是可以进行二次开发,比如ytkah想要开发一个专家出诊表的功能模块,如下图所示,每天的专家都不一样,可以用到内容模型,但是相对比较复杂;我们可以把每天的坐诊情况写成一篇文章再通过调用文章内容的形式来实现(科室、上午下午、专家名称用table表格罗列出来,效果见mzeyes.com)。
724 0
关于shell调用MySQL存储过程的问题
前天收到一个任务,要统计每天ETL的运行情况,感觉每天从给的SQL语句一个一个的查询影响效率。 就行用写一个存储过程来实现,然后通过shell调用这个存储过程来自动跑数据,写到相应的文件里~ 思路就是这样,废话不说,上一下写好的代码。 DELIMITER // create procedure sp_etl_info_day (in statis_date int) begin
1965 0
Mybatis调用Mysql存储过程
在我的后台系统中,今天需要使用到存储过程。存储过程还真没写过,今天就写了个存储过程。使用在后台中。 其实这个接口功能  是涉及几张表的修改,删除,新增的。就写个一个存储过程。 存储过程: 1 CREATE PROCEDURE `sp_combine_admin_group`(IN `g...
753 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载