SQL For 循环中的参数?
SQL Parameters in For Loop?
我开始重构我的代码以在我的 asp.net 应用程序中使用 'best' 实践。
我正在进行的重大重构之一是改变我在应用程序中使用 SQL (ado.net) 的方式。我已经更改了所有查询,在这些查询中,我根据用户输入检索信息,以通过采用输入参数的存储过程来完成,以减少应用程序的负载并将数据库项目保持在数据库级别。我还更改了一个插入语句,我允许用户对数据库执行操作以使用参数而不是直接从字符串列表中获取。
但是,我注意到自己现在总共重复了我的代码 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]);
应该这样做,假设列表是列表而不是数组
for(int i = 0 ; i < list.Count ; i++)
{
com.Parameters.AddWithValue(string.Format("@H{0}",i),list[i]);
}
我会像这样使用正常的 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];
我开始重构我的代码以在我的 asp.net 应用程序中使用 'best' 实践。
我正在进行的重大重构之一是改变我在应用程序中使用 SQL (ado.net) 的方式。我已经更改了所有查询,在这些查询中,我根据用户输入检索信息,以通过采用输入参数的存储过程来完成,以减少应用程序的负载并将数据库项目保持在数据库级别。我还更改了一个插入语句,我允许用户对数据库执行操作以使用参数而不是直接从字符串列表中获取。
但是,我注意到自己现在总共重复了我的代码 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]);
应该这样做,假设列表是列表而不是数组
for(int i = 0 ; i < list.Count ; i++)
{
com.Parameters.AddWithValue(string.Format("@H{0}",i),list[i]);
}
我会像这样使用正常的 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];