功能 :  根据调用的方法名称  反射动态调用  sql Command 的方法

代码如下:

///

/// 存储过程的属性

/// ProcName 存储过程的名称

/// MethodName 执行SqlCommand 方法的名称

/// PrmList 存储过程的参数

///

public class ExeProc

{

public string ProcName;

public string MethodName;

public object[] PrmValue;

}

根据制定的存储过程的名称

和参数  来执行指定的存储过程 和 调用 sqlCommand 的方法

代码如下:

public class DataHelper

{

private string connString = null;

public DataHelper(string conStr)

{

this.connString = conStr;

}

///

///  执行存储过程

///

/// 执行存储过程的属性

/// ProcName 存储过程的名称

/// MethodName 执行SqlCommand 方法的名称

/// PrmList 存储过程的参数

///

/// 返回执行的结果

public object ExecProcRetObj(ExeProc ep)

{

if (this.connString != null && this.connString != string.Empty)

{

try

{

SqlConnection con = new SqlConnection(this.connString);

SqlCommand cmd = new SqlCommand();

cmd.Connection = con;

cmd.CommandText = "Exec " + ep.ProcName + " ";

foreach (object obj in ep.PrmValue)

{

cmd.CommandText += obj + ",";

}

cmd.CommandText = cmd.CommandText.Remove(cmd.CommandText.Length - 1, 1);

Type ty = cmd.GetType();

con.Open();

//用反射根据输入的方法名 执行对应的方法

object retObj = ty.InvokeMember(ep.MethodName, BindingFlags.InvokeMethod, null, cmd, null);

if (retObj.GetType().FullName == "System.Data.SqlClient.SqlDataReader")

{

//将返回的object 转换成DataTable

DataTable retDt = new DataTable();

retDt.Load(retObj as SqlDataReader);

con.Close();

con.Dispose();

return retDt;

}

return retObj;

}

catch (Exception ex)

{

System.Windows.Forms.MessageBox.Show("获取数据发生错误n" + ex.Message);

}

}

return null;

}

}

c#执行oracle存储过程,C#中如何执行存储过程方法相关推荐

  1. oracle sql语句中包含‘’ 的解决方法

    oracle sql语句中包含'&' 的解决方法 参考文章: (1)oracle sql语句中包含'&' 的解决方法 (2)https://www.cnblogs.com/hm1990 ...

  2. winform执行oracle语句,C#中的Winform应用程序连接远程Oracle数据库的配置文件及SQL语句的写法...

    远程连接Oracle数据库的配置文件及sql语句 近期,应朋友的要求,用C#语言开发了一个winform应用程序,要求的是连接到远程的Oracle数据库,用惯了SQL Server的我突然有点懵,然后 ...

  3. navicat 怎么调试存储过程_Navicat中如何调试存储过程

    存储过程调试方法 参考 调试非常麻烦 如何在存储过程中注释? 在存储过程编辑中无法注释,所以需要先将代码拷贝到普通查询页,在查询页注释好,然后再将代码拷贝回存储过程中,保存. 变量定义 定义varch ...

  4. java调用sqlserver存储过程_Java中调用SQLServer存储过程示例

    下面就发布一个完整的采用setXXX(String parameterName, XXX x)的编写方法.创建数据表,存储过程的代码都完整发布. 创建表: CREATE TABLE [BookUser ...

  5. oracle 转储 mysql_Oracle中DUMP的转储方法

    什么是DUMP: 美[dand;mp] 转贮:转存:转贮数据 (内存信息)转贮,转存 DUMP是一个动词,它代表一种操作,说的 什么是DUMP: 美[d∧mp] 转贮:转存:转贮数据 (内存信息)转贮 ...

  6. plsql执行oracle函数,PLSQL中Function和Procedures的简单使用

    FUNCTION(函数方法): 作用: 用于返回特定的数据(数据处理),关注点在于返回的结果. 格式: CREATEORREPLACEFUNCTION函数名(参数  类型) RETURN类型 IS名称 ...

  7. java批量执行sql语句_Java中批量执行sql语句

    在我们实际项目开发过程中,可能有的功能在后台需要执行几条sql语句甚至需要批量的执行一些sql语句,如果是循环一条一条执行,我想大家都知道这样做的效率特别低,尤其是批量sql时,但是如果我们先循环把整 ...

  8. oracle创建job一年执行,Oracle快速创建定时job执行批量转储过程脚本参考案例

    -- 创建短信批量转储存储过程,将已经发送的短信转移至短信历史表 create or replace procedure PUB_SHORTMSG_ARCH_BAT as MSG_ID pub_sho ...

  9. mysql 读取oracle数据_Python中Pandas通过read_sql方法从Mysql或Oracle数据库中读取数据帧(DataFrame)...

    1.pandas.read_sql(sql,con,index_col = None,coerce_float = True,params = None,parse_dates = None,colu ...

最新文章

  1. CVPR 2022官方发布重要通知,禁止审稿期公开传播论文,静默期4个多月
  2. 这是Nginx的负载均衡配置方法
  3. linux系统结构,文件寻址,文件管理编辑,正则表达式
  4. MyBatis在insert插入操作时返回主键ID的配置
  5. 为什么需要消息队列MQ
  6. python匿名函数里用for_请问这段Python代码如何用匿名函数简化?
  7. 双系统linux进了grub,windows linux双系统开机后进去grub如何修复
  8. 7-69 超市促销 (6 分)
  9. detachedcriteria查询去重_sql的简单查询
  10. 丁胖胖眼中的WINDOWS操作系统(一)
  11. JavaScript文件存储信息对象cookie编码生存期
  12. [Swift]LeetCode921.使括号有效的最少添加 | Minimum Add to Make Parentheses Valid
  13. float,double和decimal类型
  14. 毕业设计2- MPU6050传感器调试记录(STM32CubeMX+STM32F103C8T6)
  15. jQuery - 不同版本的差异汇总(版本选择建议)
  16. linux中怎么卸载桌面图标,如何从Ubuntu 18.04桌面上删除垃圾桶图标
  17. 博弈:唯冠和苹果的iPad商标案之争
  18. Java 导出 PDF之固定模板导出
  19. 时势下的HMS和GMS的前世今生——前生篇
  20. REST-Assured,接口自动化的 “瑞士军刀“- 断言篇

热门文章

  1. Spring Cloud Alibaba发布第二个版本,Spring 发来贺电
  2. day23:shell基础介绍 alias及重定向
  3. Kotlin学习笔记(五) 扩展函数 扩展属性
  4. 百度搜索_如何打开Intellij IDEA的代码提示功能?
  5. 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
  6. Redis漏洞?阿里云被攻击!
  7. 高频交易都有哪些著名的算法
  8. 第十节 范围操作符(Range Operators)
  9. Lync server 2010部署及解决方案
  10. 详解C#委托,事件与回调函数