C#中如何执行存储过程方法
C#中如何执行存储过程方法
发布时间:2016-12-28 来源:查字典编辑
摘要:功能:根据调用的方法名称反射动态调用sqlCommand的方法复制代码代码如下://////存储过程的属性///ProcName存储过程的名...

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

复制代码 代码如下:

/// <summary>

/// 存储过程的属性

/// ProcName 存储过程的名称

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

/// PrmList 存储过程的参数

/// </summary>

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;

}

/// <summary>

/// 执行存储过程

/// </summary>

/// <param name="ep">执行存储过程的属性

/// ProcName 存储过程的名称

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

/// PrmList 存储过程的参数

/// </param>

/// <returns>返回执行的结果</returns>

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#教程学习
热门C#教程学习
编程开发子分类