For 循环中的 SQL 参数?

Pau*_*aul 0 c# sql-server asp.net ado.net

我开始重构我的代码以在我的 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]);
Run Code Online (Sandbox Code Playgroud)

Dav*_*idG 5

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

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

不过,我建议你不要使用 AddWithValue,因为它可以产生意想不到的后果。而是做这样的事情:

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