『C#基础』C#调用存储过程

本文介绍如何使用C#和Ado.NET调用SQL Server中的存储过程,并提供了一个完整的示例代码。该示例展示了如何定义输入参数、输出参数,并通过SqlCommand对象执行存储过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正文:

这里使用Ado.NET中的SqlCommond来执行存储过程。

需要注意的是,cmd的类型CommondType,因为我们要在这里指定为存储过程之后,我们才可以将cmd当作存储过程来调用。

存储过程的返回值也需要注意,如果有返回值的话,一定不要将类型写错了~

对于传入参数,有的人习惯一个一个加,有的人习惯用数组,我习惯用List,然后整体加到参数里面去。这几种方法都是可行的,差别应该是在对于内存的使用方面,是否需要对内存的控制加强到这个地步,还是要看所做的项目需要了。

 

参考代码:

using System;
using System.Collections.Generic;

using System.Data;
using System.Data.SqlClient;
using System.Data.Common;

namespace csdemo.basic.AdoDemo
{
    /// <summary>
    /// 存储过程操作DEMO
    /// </summary>
    public class DataProcedureDemo
    {
        /// <summary>
        /// 测试存储过程是否可以使用
        /// </summary>
        /// <param name="procedureName">存储过程名称</param>
        /// <param name="conn">数据连接</param>
        /// <returns>是否可以正常使用</returns>
        public bool ProcedureTest(string procedureName,SqlConnection conn)
        {
            List<SqlParameter> parm = new List<SqlParameter>();

            // 输入参数
            parm[0] = new SqlParameter();
            parm[0].ParameterName = "@Id";
            parm[0].SqlDbType = SqlDbType.UniqueIdentifier;
            parm[0].Value = new Guid(); 
            parm[0].Direction = ParameterDirection.Input;   // 定义参数IO类型

            parm[1] = new SqlParameter();
            parm[1].ParameterName = "@Name";
            parm[1].SqlDbType = SqlDbType.Char;
            parm[1].Size = 20;
            parm[1].Value = "峻之岭峰";
            parm[1].Direction = ParameterDirection.Input;

            parm[2] = new SqlParameter();
            parm[2].ParameterName = "@Birthday";
            parm[2].SqlDbType = SqlDbType.Date;
            parm[2].Value = DateTime.Now.ToString("MMdd");
            parm[2].Direction = ParameterDirection.Input;

            // 输出参数
            parm[3] = new SqlParameter();
            parm[3].ParameterName = "@Result";
            parm[3].SqlDbType = SqlDbType.Int;
            parm[3].Direction = ParameterDirection.Output;

            // 执行命令定义
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = conn;
            cmd.CommandText = procedureName;
            cmd.Parameters.Add(parm);   // 添加参数到命令

            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }

            bool result = false;
            try
            {
                cmd.ExecuteNonQuery();  // 执行存储过程调用
                result = true;

                // 这个方法里面没有用到,用于填充DataSet
                DataSet ds = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                da.Fill(ds);

            }
            catch
            {

            }
            finally
            {
                conn.Close();
            }

            return result;
        }
    }
}


 

参考网摘:

  1. C#调用存储过程的通用类
  2. C#调用存储过程两种方法
  3. C#调用存储过程简单完整例子
  4. C#存储过程调用

转载于:https://my.oschina.net/skyler/blog/706109

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值