1

其实我最近做了一个网络应用程序。我有大约 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在这段代码中传递和参数。以及如何在业务逻辑层和 UI 中操作?

请告诉我。

4

0 回答 0