程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#中如何執行存儲過程方法

C#中如何執行存儲過程方法

編輯:C#基礎知識

功能 :  根據調用的方法名稱  反射動態調用  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;
        }
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved