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("
" + ex.Message);
                }

            }
            return null;
        }
    }

좋은 웹페이지 즐겨찾기