使用来ADO.NET调用存储过程

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

使用存储过程

存储过程有两点优点:

  • 性能高
  • 安全性好

在ADO.NET中调用存储过程

SqlCommand cmd = new SqlCommand();
cmd.CommandText ="sp_update_student";
cmd.CommendType = CommandType.StoredProcedure;
//...定义和添加SqlParameter参数
//...打开链接并执行命令

其中CommandText是负责讲存储过程名成包装成字符串发送给数据库,但是数据库只是默认String为sql语句。会报错,所以要设置CommendType属性。
例子上文将CommendType定义为: StoredProcedure,也就是存储过程属性,否则会报错,因为数据库不认识之前传的字符串。

在程序中会有三种形式传递sql语句:

  • 执行拼接的sql语句
  • 执行参数化sql语句
  • 执行存储过程

其中执行存储过程的性能远高于其他两种性能,第二是参数化,最后一名是拼接sql语句
但是存储过程的安全性不是绝对的,参数化同样相对于拼接的sql语句有更好的安全性。


SqlCommand cmd = new sqlCommand()
cmd.Connection = conn;
cmd.CommandText ="sp_update_student";
cmd.CommandType = CommandType.StoreProcedure;
SqlParameter[] pars =
{
   
   
new SqlParameter("@name","zs")//输入参数
new SqlParameter("@result",null)//输出参数
};
pars[1].Direction = ParameterDirection.Output;

调用带参存储过程,获取输出参数值

  • 获取输出参数的值时,应确保链接对象已关闭。
int count = convert.ToInt32(pars[1].Value);     

例子如下

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System
​​​​​​ADO.NET调用存储过程 等替换为适合你的存储过程和数据库环境的信息。如果存储过程不需要任何参数,你可以省略添加参数的代码部分。同样地,如果存储过程有返回值或输出参数,请确保按照你的存储过程的定义来处理它们。然后,我们添加了任何必需的输入参数,并执行了存储过程。如果存储过程有输出参数或返回值,我们还需要在执行后读取这些值。中调用存储过程是一个常见的任务,因为存储过程可以提供更好的性能、减少网络流量,并允许数据库管理员对数据库操作进行优化和维护。如果存储过程有输出参数或返回值,也需要处理。如果存储过程有输出参数或返回值,读取它们。 阅读详情

相关推荐

使用C#调用ADO.NET执行存储过程

C#开发中,ADO.NET是一种常用的数据库访问技术,可以通过它来连接数据库并执行各种数据库操作。存储过程是一组预定义的数据库操作步骤,可以在数据库服务器上执行。请注意,在实际开发中,我们需要根据具体的业务需求和存储过程定义来编写代码。需要注意的是,在实际开发中,我们需要根据存储过程的具体情况来处理返回的结果。请确保将其替换为实际的数据库连接字符串,其中包括数据库服务器名称、数据库名称、用户名和密码。我们首先创建了一个数据库连接,并打开了它。在这个示例中,我们假设存储过程返回了员工的姓名和年龄两个字段。

BugHunterX的博客 283

ADO.NET执行存储过程

1 在SQL Server中定义一个存储过程 create proc [dbo].[userinfo_userLogin_query] as select a.*,b.UserName from T_UserInfo a join T_UserLogin b on a.LoginId=b.LoginId go 在vs中调用这个存储过程 public class HomeCont

Fanbin168的专栏 1911

VC ADO调用存储过程

关于ADO调用存储过程的标准的做法:按照以下步骤进行:   1、生成并初始化一个_CommandPtr对象;   2、生成调用存储过程需要的参数,这些参数都是_ParameterPtr对象;   3、按照顺序将使用_CommandPtr的Append方法为存储过程提供参数(包括输入参数和输出参数);   4、为_CommandPtr对象指定需要使用ADO连接等;   5、使用_CommandPtr的Execute方法调用存储过程;   6、从结果中获取返回参数的值(如果有的话)。

SqlHelper类库

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.IO; namespace BFB.DAL { /// <summary...

weixin_30876945的博客 187

ADO.NET调用存储过程

一: 执行不带返回参数(Input)的存储过程            1: 首先在数据库写个存储过程, 如创建个 addUser存储过程。                   Create Proc addUser                   @ID int,                   @Name varchar(20),                   @Sex

qq_36074058的博客 467

C#二十六 使用Ado.Net调用存储过程

存储过程是连接式访问数据库的一种延伸,主要是通过命令对象调用数据库系统中的存储过程来完成的。存储过程可以带参数,也可以不带参数,可以返回结果页可以没有返回结果。存储过程执行速度快、允许模块化程序设计并且提高系统安全性,所以是最常用的操作数据库的技术。使用Ado.Net中的SqlCommand可以调用并执行Sql Server数据库的存储过程。 重点: Ø如...

weixin_30687051的博客 354

ADO.NET调用存储过程

<br />一: 执行不带返回参数(Input)的存储过程<br />           1: 首先在数据库写个存储过程, 如创建个 addUser存储过程。<br />                  Create Proc addUser<br />                  @ID int,<br />                  @Name varchar(20),<br />                  @Sex varchar(20)<br />             

853

如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程

 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程 本页概要使用 DataReader 返回行和参数使用 Command 对象的 ExecuteScalar 方法使用 Command 对象的 ExecuteNonQuery 方法参考 var sectionFilter

C#,SQL,Castle,Hibernate,MVC,Spring.net 1875

Ado.Net调用带输入,输出参数的存储过程

第一步:在数据中编写好通过编号来获取当前学生的更多信息的存储过程(以学生表为主,暂时不展示数据) ---根据编号来查询出学生的其他信息,带输入输出参数 if(exists(select * from sys.objects where name = 'proc_getStudentOtherInfoBySid'))    //判断当前数据库中是否存在这个存储过程    drop proc p

Lover_lang的博客 1572

使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程

使用 DataReader 返回行和参数 使用 Command 对象的 ExecuteScalar 方法 使用 Command 对象的 ExecuteNonQuery 方法 概要loadTOCNode(1, summary);有多种方法使用 ADO.NET 调用存储过程并获得返回值和返回参数,其中包括: 使用 ADO.NET 和 Visual C# .N

2054

ado.net 调用存储过程写法

 private static readonly string connString = ConfigurationManager.ConnectionStrings["WebContext"].ConnectionString;  public static int ExecuteNonQuery(string sql,CommandType  type,  params SqlParamete...

刘建峰的博客 844

ado mysql 存储过程_两种存储过程调用ADO.NET代码的区别

1ADO.NET经过长时间的发展,很多用户都很了解ADO.NET了,这里我发表一下个人理解,和大家讨论讨论。为了突出新方法的优点,首先介绍一下在.NET调用存储过程的“官方”方法。另外,本文的所有示例程序均工作于SqlServer数据库上,其它情况类似,以后不再一一说明。本文所有例子均采用C#语言。要在应用程序中访问数据库,一般性的步骤是:首先声明一个数据库连接SqlConnection,然后声...

weixin_39570777的博客 150

ado .net oracle varray,ADO.NET调用ORACLE 11g存储过程问题

我用ADO.NET 调用存储过程会出现( - + case mod new not null continue avg count current exists max minprior sql stddev sum variance execute forall merge timetimestamp interval date pipe purge符号 "(在 ":" 继续之前已插入。存储...

weixin_31916125的博客 179

ADO.NET系列之事务和调用存储过程

ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 前几篇我们介绍了Connection、Command和DataAdapter等对象,本节我们将学习ADO.NET中不可缺少的事务,以及调用数据库的存储过程ADO...

weixin_30497527的博客 334

ado.net mysql 事务_ADO.NET系列之事务和调用存储过程

前几篇我们介绍了Connection、Command和DataAdapter等对象,本节我们将学习ADO.NET中不可缺少的事务,以及调用数据库的存储过程ADO.NET事务在许多大型、关键的应用程序中,计算机每秒钟都在执行大量的任务。更为经常的不是这些任务本身,而是将这些任务结合在一起完成一个业务要求,称为事务。如果能成功地执行一个任务,而在第二个或第三个相关的任务中出现错误,将会发生什么?这个...

weixin_29062613的博客 359

ADO.NET(五) 调用存储过程(oracle为例)

存储过程是保存在数据库上的批次执行的一条或者多条SQL语句,存储过程和函数相似,他们都是良好的逻辑封装体 可以接受传入和传出参数,存储过程有很多优点。 1、更易于维护 你可以优化存储过程中的命令而不用重新编译应用程序。 2、可以更安全的使用数据库 可以让用于执行ASP.NET代码的windows账号有使用某些存储过程的权限但是不可以访问基表。 3、可以提升性能 因为存储过程是多条语句

2605

oracle调用.net,在ado.net中实现oracle存储过程调用两种方式

conn"].ToString();OracleConnection oc= newOracleConnection(or);oc.Open();OracleCommand om=oc.CreateCommand();om.CommandType=CommandType.StoredProcedure;om.CommandText= "proc2";om.Parameters.Add("v_id"...

weixin_36158990的博客 201

使用 ADO.NET 调用存储过程

有多种方法使用 ADO.NET 调用存储过程并获得返回值和返回参数,其中包括: 使用 DataSet 对象,在获得返回值和返回参数之外,还可以收集并使用返回的数据行。使用 DataReader 对象收集返回的行,遍历这些行,然后收集返回值和返回参数。使用 ExecuteScalar 方法返回结果中第一行的第一列的值以及返回值和返回参数。这对于聚合函数特别有用。使用 ExecuteNonQue

1136
上一篇: 用参数化命令执行sql语句
下一篇: 学习路由和数据传递
MousseIn
博客等级 码龄7年 8粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值