For循环中的SQL参数?

时间:2015-10-26 14:26:31

标签: c# asp.net sql-server ado.net

我开始重构我的代码以使用' best'我的asp.net应用程序中的实践。

我正在做的一个重要的改进是改变我在我的应用程序上使用SQL(ado.net)的方式。我根据用户输入检索信息的所有查询都是通过存储过程来完成的,这些存储过程采用输入参数来减少应用程序的负载并将数据库项目保持在数据库级别。我还改变了一个插入语句我允许用户对数据库进行使用Paramaters,而不是直接从字符串列表中获取。

但是,我发现自己现在总共重复了23次代码。我的代码在某种循环中尖叫,但我无法想到如何做到这一点。我看过foreach循环,但它不起作用。

我已在下面附上我的代码。你们中的一个可以帮助我,给我一个正确的循环来使用最佳实践和一个使用它的例子(请不要为我编写代码,因为我想了解它),但请告诉我如何循环工作。

代码:

com.Parameters.AddWithValue("@H0", list[0]);
com.Parameters.AddWithValue("@H1", list[1]);
com.Parameters.AddWithValue("@H2", list[2]);
com.Parameters.AddWithValue("@H3", list[3]);
com.Parameters.AddWithValue("@H4", list[4]);
com.Parameters.AddWithValue("@H5", list[5]);
com.Parameters.AddWithValue("@H6", list[6]);
com.Parameters.AddWithValue("@H7", list[7]);
com.Parameters.AddWithValue("@H8", list[8]);
com.Parameters.AddWithValue("@H9", list[9]);
com.Parameters.AddWithValue("@H10", list[10]);
com.Parameters.AddWithValue("@H11", list[11]);
com.Parameters.AddWithValue("@H12", list[12]);
com.Parameters.AddWithValue("@H13", list[13]);
com.Parameters.AddWithValue("@H14", list[14]);
com.Parameters.AddWithValue("@H15", list[15]);
com.Parameters.AddWithValue("@H16", list[16]);
com.Parameters.AddWithValue("@H17", list[17]);
com.Parameters.AddWithValue("@H18", list[18]);
com.Parameters.AddWithValue("@H19", list[19]);
com.Parameters.AddWithValue("@H20", list[20]);
com.Parameters.AddWithValue("@H21", list[21]);
com.Parameters.AddWithValue("@H22", list[22]);
com.Parameters.AddWithValue("@H23", list[23]);

2 个答案:

答案 0 :(得分:4)

我会像这样使用普通的for循环:

for(int index = 0; index < list.Length; index++)
{
    com.Parameters.AddWithValue("@H" + index.ToString(), list[index]);
}

但是,我建议您do not use AddWithValue,因为它可能会产生意想不到的后果。而是做这样的事情:

com.Parameters.Add("@H" + index.ToString(), SqlDbType.Int).Value = list[index];

答案 1 :(得分:1)

这应该这样做,假设list是List而不是数组

for(int i = 0 ; i < list.Count ; i++)
{
    com.Parameters.AddWithValue(string.Format("@H{0}",i),list[i]);
}