我有一个正在处理的数据层,它使用三个不同的存储过程调用数据库三次。我最初创建了三个不同的函数来检索结果的三个维度。第一个返回单个值,第二个返回整行,第三个返回表。它们还接受不同的参数。第一个采用两个 varchar,第二个采用两个 int,最后三个采用 varchar。如果我尝试花哨并将其全部合并,如下所示,我会遇到问题吗?
public void CallStoredProcedure(string[] astrParams, string strConnectionString, string strStoredProcedure)
{
int nParams = 0;
SqlParameter[] asqlParams;
asqlParams = SqlHelperParameterCache.GetSpParameterSet(strConnectionString, strStoredProcedure);
foreach (string strParam in astrParams)
{
asqlParams[nParams].Value = strParam;
nParams++;
}
}
或者,我可以在不知道里面有什么的情况下使用混合数据类型的数组,我可以将不同的类型分配到同一个数组中,替换元素吗?
object[] aParams;
string strName = "Joe";
long lngHeight = 180;
object[0] = strName;
object[1] = lngHeight;
CallStoredProcedure(aParams, strConnectionString, "StoredProcedure1")
long lngWeight = 3;
string strItemName = "Bookend";
object[0] = lngWeight;
object[1] = strItemName;
CallStoredProcedure(aParams, strConnectionString, "StoredProcedure2")
然后将该函数内的代码更改为:
foreach (object oParam in astrParams)
{
asqlParams[nParams].Value = oParam;
nParams++;
}
我需要ToString()
在这两种情况中的一种或两种情况下使用吗?如果是这样,这是否本质上将它们变成了同一件事?就像我说的那样,现在我有三个函数可以接收正确输入的所有参数,但如果可能的话,我正试图摆脱重复的代码。