c#定义一个方法,根据存储过程名称和存储过程参数数组,执行对应的存储过程
定义一个根据存储过程名称和存储过程参数数组,执行对应的存储过程的方法。用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] ( ), ), ), ), ) ) as declare @count int select @count=COUNT(*) from UserList where UserName=@UserName 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 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("), new SqlParameter("), new SqlParameter("), new SqlParameter("), new SqlParameter("), }; //存储过程5个参数的值 parameter].Value = name; parameter].Value = userName; parameter].Value = name; parameter].Value = departName; parameter].Value = roleName; //调用执行存储过程的方法 string result = SQLdbHelper.ExcuteProcedure("ProUpUserList", parameter).ToString();
只是这种方法不适合应用与WebService,因为它不支持SqlParameter类型,无法进行参数传递
c#定义一个方法,根据存储过程名称和存储过程参数数组,执行对应的存储过程的更多相关文章
- 定义一个Person类,其中包括:1.定义属性:姓名、年龄、民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1
题目显示不全,完整题目描述: (1)定义一个Person类,其中包括:1.定义属性:姓名:年龄:民族作为成员变量.定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化.3.定义多个方法:分别显 ...
- 在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行
package hanqi; import java.util.Scanner; public class Test7 { public static void main(String[] args) ...
- 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)
定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容.提示(可以了解python的urllib模块) import urllib.request def get_ ...
- #定义一个方法get_num(num),num参数是列表类型,判断列表里面的元素为数字类型。其他类型则报错,并且返回一个偶数列表:(注:列表里面的元素为偶数)。
#定义一个方法get_num(num),num参数是列表类型,判断列表里面的元素为数字类型.其他类型则报错,并且返回一个偶数列表:(注:列表里面的元素为偶数). def get_num(num): i ...
- C#定义一个方法的3种形式
[定义方法对象,可使用签名兼容的委托变量来引用它] 1.定义一个方法,采用常规标准写法(V1.0) [本质上是签名兼容的委托类型的实例 / 对象] 2.定义一个方法,采用匿名方法(delegate)( ...
- 一道前端面试题:定义一个方法将string的每个字符串间加个空格返回,调用的方式'hello world'.spacify();
偶然在群里看到了这道题:定义一个方法将string的每个字符串间加个空格返回,调用的方式'hello world'.spacify(); 这道题主要是对JavaScript对象原型的考察.
- 创建一个People类型,有年龄、工资、性别三个属性。 定义一个方法叫做找对象,找对象方法传过来一个人;
创建一个People类型,有年龄.工资.性别三个属性. 定义一个方法叫做找对象,找对象方法传过来一个人: 首先如果性别相同,就输出"我不是同性恋", 如果对方是男的,年龄小于28, ...
- 16.按要求编写Java应用程序。 编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。
//分类 package com.bao; public class Shuchu { int[]yi=new int[50]; String[][]er=new String[10][10]; vo ...
- C#如何定义一个变长的一维和二维数组
1.假设将要定义数组的长度为程序执行过程中计算出来的MAX List<int> Arc = new List<int>(); ; i < MAX; i++) { Arc. ...
随机推荐
- Online网站集
http://tool.oschina.net/apidocs/ 在线工具(IT技术工具)
- Zend_Db_Table::getDefaultAdapter is not working
在Bootstrap中使用 $url = constant ( "APPLICATION_PATH" ) . DIRECTORY_SEPARATOR . 'configs' . D ...
- 设计模式C++实现_1_Singleton设计模式(简单的实现)
Singleton设计模式 思路如以下: Single.h #pragma once #include <iostream> #include <string> using n ...
- HTML5 Web SQL Database 与 Indexed Database 的 CRUD 操作
http://www.ibm.com/developerworks/cn/web/1210_jiangjj_html5db/ 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- SQL Server编程系列(1):SMO介绍
原文:SQL Server编程系列(1):SMO介绍 续篇:SQL Server编程系列(2):SMO常用对象的有关操作 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己 ...
- printf 对齐
printf关于对其的问题(参考有关博客加上自己的一些总结) 1.关于左对齐或右对齐问题, 默认的如果%后没有“-”是右对齐的,如果%后跟“0”,不足的个数用0来填充, 例如:printf(&qu ...
- 使用Maven管理Spring[转]
原文链接: Spring with Maven 原文日期: 2013年04月17日 翻译日期: 2014年06月29日 翻译人员: 铁锚 翻译原文连接:http://blog.csdn.net/ren ...
- 华为G520联通版刷机包 基于MIUI CM11新 平稳 稳定
ROM介绍 刷先配置双卡:"设定-安卓原生设置-双卡套-配置订阅",否则,无信号 使开发人员选项方法:"设定-安卓原生设置-关于手机-发布"连续点击版本 启用A ...
- Mysql编写定时任务事件
原文:Mysql编写定时任务事件 场景: 例如:某系统,用户每天只能拥有一次的抽奖机会,抽过后当天就不可再抽,但是过了24:00点后用户就重新拥有一次抽奖机会.像这种需要数据库定时对某个字段进行更新操 ...
- Scriptcase演示程序,现在,他们使用SC多么简单的开发系统
Scriptcase它内置了一批成熟的业务系统,我们的系统的一部分已经完成和功能微调,在互联网上.检查每个人Scriptcase如何简单可以加速的功能模块的发展. 访问 http://www.phps ...