源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#中如何执行存储过程方法

  • 时间:2022-05-13 21:02 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#中如何执行存储过程方法
功能 :  根据调用的方法名称  反射动态调用  sql Command 的方法
[u]复制代码[/u] 代码如下:
 /// <summary>     /// 存储过程的属性     /// ProcName 存储过程的名称     /// MethodName 执行SqlCommand 方法的名称     /// PrmList 存储过程的参数     /// </summary>     public class ExeProc     {         public string ProcName;         public string MethodName;         public object[] PrmValue;     }
根据制定的存储过程的名称 和参数  来执行指定的存储过程 和 调用 sqlCommand 的方法
[u]复制代码[/u] 代码如下:
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;         }     }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部