C#调用存储过程详解(带返回值、参数输入输出等)

介绍

在使用C#开发的过程中,经常需要调用存储过程来完成某些任务,比如从数据库中获取数据或者执行一些复杂的数据处理操作。本文将详细介绍C#调用存储过程的方法,包括如何传入参数、传递多个参数、以及如何获取存储过程的返回值。

调用带参数的存储过程

首先,我们需要连接到数据库。以使用SQL Server为例:

using System.Data.SqlClient;

// 连接到数据库
SqlConnection conn = new SqlConnection("server=(local);database=TestDB;uid=testuser;pwd=testpwd");
conn.Open();

接下来,我们定义调用存储过程的代码:

// 定义Command对象
SqlCommand cmd = new SqlCommand("存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;

// 添加参数
cmd.Parameters.Add("@参数名", SqlDbType.VarChar, 50).Value = "参数值";

// 执行存储过程
cmd.ExecuteNonQuery();

在这个示例中,我们定义了一个SqlCommand对象,并设置了参数类型,以及传入的参数值。最后,我们调用了ExecuteNonQuery方法来执行存储过程。

如果存储过程需要多个参数,我们可以通过类似下面的方式添加参数:

cmd.Parameters.Add("@参数名1", SqlDbType.VarChar, 50).Value = "参数值1";
cmd.Parameters.Add("@参数名2", SqlDbType.VarChar, 50).Value = "参数值2";

调用带返回值的存储过程

如果存储过程具有返回值,则我们需要使用ExecuteScalar方法来获取返回值。示例如下:

// 定义Command对象
SqlCommand cmd = new SqlCommand("存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;

// 添加参数
cmd.Parameters.Add("@参数名", SqlDbType.VarChar, 50).Value = "参数值";

// 执行存储过程并获取返回值
int result = (int)cmd.ExecuteScalar();

在这个示例中,我们使用ExecuteScalar方法来获取存储过程的返回值,并将返回值转换为int类型。

调用带输入输出参数的存储过程

如果存储过程需要传递输入输出参数,则需要使用SqlParameter对象来定义和设置参数,以及使用ExecuteNonQuery或ExecuteScalar方法来执行存储过程。示例如下:

// 定义Command对象
SqlCommand cmd = new SqlCommand("存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;

// 添加输入参数
SqlParameter inputParam = cmd.Parameters.Add("@参数名", SqlDbType.VarChar, 50);
inputParam.Value = "输入参数值";

// 添加输出参数
SqlParameter outputParam = cmd.Parameters.Add("@参数名", SqlDbType.VarChar, 50);
outputParam.Direction = ParameterDirection.Output;

// 执行存储过程
cmd.ExecuteNonQuery();

// 获取输出参数的值
string outputValue = (string)outputParam.Value;

在这个示例中,我们定义了一个输入参数和一个输出参数,并通过Direction属性设置了输出参数的方向。最后,我们使用ExecuteNonQuery方法来执行存储过程,并通过输出参数的Value属性来获取输出参数的值。

示例

下面展示一个具体的示例,这个示例用到了上述的三种不同的技巧。

// 定义Command对象
SqlCommand cmd = new SqlCommand("存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;

// 添加输入参数
SqlParameter inputParam = cmd.Parameters.Add("@输入参数名", SqlDbType.VarChar, 50);
inputParam.Value = "输入参数值";

// 添加输出参数
SqlParameter outputParam = cmd.Parameters.Add("@输出参数名", SqlDbType.VarChar, 50);
outputParam.Direction = ParameterDirection.Output;

// 添加返回值参数
SqlParameter returnValueParam = new SqlParameter("@returnValue", SqlDbType.Int);
returnValueParam.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(returnValueParam);

// 执行存储过程
cmd.ExecuteNonQuery();

// 获取输出参数的值
string outputValue = (string)outputParam.Value;

// 获取返回值
int returnValue = (int)cmd.Parameters["@returnValue"].Value;

在这个示例中,我们定义了一个输入参数、一个输出参数和一个返回值参数,并通过Direction属性设置了输出参数的方向。最后,我们使用ExecuteNonQuery方法来执行存储过程,并通过输出参数的Value属性和返回值参数的Value属性来获取输出参数的值和返回值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#调用存储过程详解(带返回值、参数输入输出等) - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • C#客户端程序调用外部程序的3种实现方法

    当我们编写C#客户端程序时,有时需要调用外部程序来完成一些特定的任务,比如调用命令行程序、调用其他的应用程序等等。本文将会介绍C#客户端程序调用外部程序的3种实现方法。 方法一:使用Process类调用外部程序 C#提供了Process类来调用系统中的外部程序。Process类中提供了Start方法,可以启动外部程序,并且启动的程序可以接受参数,下面是示例代…

    C# 2023年5月15日
    00
  • 如何在 .NET Core WebApi 中处理 MultipartFormDataContent

    最近在对某个后端服务做 .NET Core 升级时,里面使用了多处处理 MultipartFormDataContent 相关内容的代码。这些地方从 .NET Framework 迁移到 .NET Core 之后的代码改动较大,由于本身没有测试覆盖,导致在部署 QA 环境后引发了一些问题。这里做一个技术复盘。 什么是 MultipartFormDataCon…

    C# 2023年4月24日
    00
  • .Net Core应用增强型跨平台串口类库CustomSerialPort()详解

    .Net Core应用增强型跨平台串口类库CustomSerialPort()详解 在本攻略中,我们将详细讲解.Net Core应用增强型跨平台串口类库CustomSerialPort()的技术及工作原理,并提供两个示例说明。 什么是CustomSerialPort()? CustomSerialPort()是一种.Net Core应用增强型跨平台串口类库,…

    C# 2023年5月16日
    00
  • 基于asp.net实现图片在线上传并在线裁剪功能

    下面是基于asp.net实现图片在线上传并在线裁剪功能的完整攻略: 1. 确定上传插件 为了实现在线上传图片,我们需要选择一个合适的上传插件。目前市场上比较流行的上传插件有uploadify和plupload,我们可以根据需求自行选择。 在这里,我以uploadify为例进行说明。 2. 实现图片上传 需先引入jquery、uploadify相关的js和cs…

    C# 2023年5月31日
    00
  • 详解ASP.NET Core中配置监听URLs的五种方式

    详解ASP.NET Core中配置监听URLs的五种方式 在ASP.NET Core应用程序中,可以通过配置监听URLs来指定应用程序监听的URL地址。本攻略将详细介绍ASP.NET Core中配置监听URLs的五种方式。 方式一:通过appsettings.json文件配置 可以通过在appsettings.json文件中添加以下代码来配置监听URLs: …

    C# 2023年5月16日
    00
  • C#实现将一个字符转换为整数

    讲解“C#实现将一个字符转换为整数”的完整攻略,主要使用C#内置的Convert.ToInt32()方法进行转换,具体步骤如下: 1. 将字符转换为字符串 首先,需要将输入的字符转换为字符串类型,可以使用ToString()方法或直接将字符使用双引号引起来,如: char c = ‘5’; string s = c.ToString(); // 或者 str…

    C# 2023年5月15日
    00
  • C#管道式编程的介绍与实现

    C#管道式编程的介绍与实现 什么是管道式编程? 管道式编程是一种编程模式,它通过串联一系列管道,将输入数据转换为最终的输出数据。在 C# 中,管道式编程可以通过使用 LINQ(Language-Integrated Query)实现。LINQ 是一种语言集成查询,它允许我们使用类似 SQL 的查询语言进行数据的筛选、排序和分组,同时也支持将多个操作通过管道串…

    C# 2023年6月1日
    00
  • php5 apache 2.2 webservice 创建与配置(java)

    PHP5Apache2.2Webservice是一个用于搭建PHP Web服务的工具。本文将为您提供使用PHP5Apache2.2Webservice创建和配置Web服务的完整攻略。 步骤1:安装PHP5Apache2.2Webservice环境 首先需要准备好服务器,确保服务器上已经安装了Apache、PHP和MySQL。然后可以从此处下载并安装PHP5A…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部