c#定义一个方法,根据存储过程名称和存储过程参数数组,执行对应的存储过程
2014-03-30 12:45
761 查看
定义一个根据存储过程名称和存储过程参数数组,执行对应的存储过程的方法。用SqlParameter[]代替存储过程需要的参数。这样就不用为每一个存储过程写一个方法了
1、首先定义一个ExcuteProcedure()方法,执行存储过程,并返回第一行第一列的结果
2、再定义一个方法,执行存储过程,并返回结果集
3、然后就可以传递存储过程名称和SqlParameter[]数组,调用这两个方法执行对应存储过程。
比如有这样的一个存储过程:该存储过程有5个参数。
调用执行存储过程代码:
只是这种方法不适合应用与WebService,因为它不支持SqlParameter类型,无法进行参数传递
1、首先定义一个ExcuteProcedure()方法,执行存储过程,并返回第一行第一列的结果
public static object ExcuteProcedure(string proName, SqlParameter[] paramt) { using (SqlCommand command = new SqlCommand()) { object returnInfo = string.Empty; command.Connection = conn; //定义的SqlConnention对象 command.CommandText = proName; command.CommandType = CommandType.StoredProcedure; command.Parameters.AddRange(paramt); command.Connection.Open(); try { returnInfo = command.ExecuteScalar(); } catch { //return "False"; } finally { command.Connection.Close(); } return returnInfo; } }
2、再定义一个方法,执行存储过程,并返回结果集
public static DataSet ExcuteProcedureDS(string proName, SqlParameter[] paramt) { using (SqlCommand command = new SqlCommand()) { command.Connection = conn; command.CommandText = proName; command.CommandType = CommandType.StoredProcedure; command.Parameters.AddRange(paramt); command.Connection.Open(); using (SqlDataAdapter sda = new SqlDataAdapter()) { DataSet ds = new DataSet(); sda.SelectCommand = command; try { sda.Fill(ds); return ds; } catch { return null; } finally { conn.Close(); ds.Dispose(); } } } }
3、然后就可以传递存储过程名称和SqlParameter[]数组,调用这两个方法执行对应存储过程。
比如有这样的一个存储过程:该存储过程有5个参数。
USE [mydb] GO /****** Object: StoredProcedure [dbo].[ProUpUserList] Script Date: 03/30/2014 12:30:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- 作者: <毛泽西> -- 英文名: <tracine> -- 创建日期: <2014/3/30> -- 描叙: <更新用户表> -- ============================================= ALTER proc [dbo].[ProUpUserList] ( @Name nvarchar(50), @UserName nvarchar(50), @UserPassword nvarchar(50), @DeptName nvarchar(50), @RoleName nvarchar(50) ) as declare @count int select @count=COUNT(*) from UserList where UserName=@UserName if @count=0 begin select '用户不存在' as 'result' end else begin begin tran Up declare @DeptID int,@RoleID int select @DeptID=DepartID from DepartmentList where DepartmentName=@DeptName select @RoleID=RoleID from RoleList where RoleName=@RoleName update UserList set Name=@Name,UserName=@UserName,DepartID=@DeptID,RoleID=@RoleID,UserPassword=@UserPassword where UserName=@UserName if @@error<>0 begin rollback tran Up select '修改失败' as 'result' end else begin commit tran Up select '修改成功' as 'result' end end
调用执行存储过程代码:
SqlParameter[] parameter = new SqlParameter[] { //存储过程5个参数名称以及参数类型 new SqlParameter("@Name",SqlDbType.NVarChar,50), new SqlParameter("@UserName",SqlDbType.NVarChar,50), new SqlParameter("@UserPassword",SqlDbType.NVarChar,50), new SqlParameter("@DeptName",SqlDbType.NVarChar,50), new SqlParameter("@RoleName",SqlDbType.NVarChar,50), }; //存储过程5个参数的值 parameter[0].Value = name; parameter[1].Value = userName; parameter[2].Value = name; parameter[3].Value = departName; parameter[4].Value = roleName; //调用执行存储过程的方法 string result = SQLdbHelper.ExcuteProcedure("ProUpUserList", parameter).ToString();
只是这种方法不适合应用与WebService,因为它不支持SqlParameter类型,无法进行参数传递
相关文章推荐
- 基于C#中的类SqlCommand对象调用SQLServer存储过程时,存储过程执行成功,但是对象方法ExecuteNonQuery()返回-1
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- 存储过程有输出参数,在c#中用nhibernate调用存储过程时,如何才能获取到一个结果集和这个输出参数呢?
- C#中的类SqlCommand对象使用方法ExecuteNonQuery()调用SQLServer存储过程时,存储过程执行成功,数据发生改变,但是返回-1
- C#执行带参数的存储过程一个事例
- 定义一个job在指定的时间去执行指定的存储过程
- Sql server中根据存储过程中的部分信息查找存储过程名称的方法【视图和Function】
- C#存储过程Output返回参数 方法调用类
- 16、2015.08.03第十七节课 C#1(.net和C#的关系、VS与.net的对应关系、VS2012常用的几种应用程序、C#定义一个类的方法、类页面内容的解释、定义Person的类、调用Person类的方法、命名规范、数值类型)
- asp.net/C# 执行存储过程技术要点,获取Return返回值,解决“存储过程总返回-1”的问题
- Sql Server 带参数的存储过程执行方法
- mysql 存储过程 根据参数 动态执行sql语句
- 执行带一个存储过程参数的的SQL语句。
- .net学习之.net和C#关系、运行过程、数据类型、类型转换、值类型和引用类型、数组以及方法参数等
- 存储过程中定义参数类型为数组
- 生成C#执行指定存储过程的参数
- c# 中将一个方法的名称作为另一个方法的参数
- 根据名称检索存储过程内容和根据内容检索存储过程
- 存储过程输出参数:C#中调用输入输出参数的存储过程
- 自己写的一个根据结点名称查找CTreeCtrl树中对应结点的方法(用的是递归思想)