如何使用3层架构动态调用存储过程?

时间:2013-02-18 09:09:54

标签: c# stored-procedures 3-tier

实际上我最近制作了一个网络应用程序。我有大约20个商店程序[用于插入,更新和删除],大约12个商店程序具有不同数量的程序。

我为每个操作制作了不同的功能,比如下面的代码。

#region Update Comment
public int Update_Comment(string Comment, string Leave_ID)
{
SqlCommand com = new SqlCommand("Update_Comments", con);
com.CommandType =CommandType.StoredProcedure;
com.Parameters.Add("@Comments",SqlDbType.NVarChar,1000).Value =Comment;
com.Parameters.Add("@Leave_ID", SqlDbType.NVarChar, 50).Value = Leave_ID;
con.Open();
int row = com.ExecuteNonQuery();
con.Dispose();
con.Close();
return row;

}
#endregion

#region Updating Leave after approval
public int Updating_Leave(string User_Id, string Leave_Type, int Leave_Applied)
{
SqlCommand com = new SqlCommand("Update_Leave", con);
com.CommandType =CommandType.StoredProcedure;
com.Parameters.Add("@User_Id",SqlDbType.NVarChar,50).Value = User_Id;
com.Parameters.Add("@Leave_Type", SqlDbType.NVarChar, 50).Value = Leave_Type;
com.Parameters.Add("@Leave_Applied", SqlDbType.Int).Value = Leave_Applied;
con.Open();
int row = com.ExecuteNonQuery();
con.Dispose();
con.Close();
return row;

}
#endregion

有两个功能第一个功能是2个参数,第二个功能有3个,但其余的代码是相同的。

所以有可能,在enum和param的帮助下,我们可以减少我所做的功能。所有12个函数都有不同数量的参数。

因为我确实喜欢下面的

enum Operation_Type
{
Insert,
Update,
Delete,
Select
}

public void Do_Insert_Update_Delete(string Proc_Name, Operation_Type Type ,int No_Of_Args , params object[] args)
{
if(Operation_Type.Insert ==Type)
{
    SqlCommand com =new SqlCommand(Proc_Name,con);
    com.CommandType = CommandType.StoredProcedure;
    for(int i=1; i== No_Of_Args; i++)
    {
    com.Parameters.AddWithValue("sss",args);
    }
    con.Open();
    com.ExecuteNonQuery();
    con.Close();
    con.Dispose();

}

}

但我不知道如何在此代码中传递Proc_Name和参数。以及如何在businesslogic层和UI中操作?

请告诉我。

0 个答案:

没有答案