是否可以对这种类型的查询集使用循环
本文关键字:查询 循环 类型 种类 是否 | 更新日期: 2023-09-27 18:09:39
sc = new MySqlCommand("Update tbName set AvgTime=" + avgTimeArray[1]+ " where PatternId=1", msc);
sc.ExecuteNonQuery();
sc = new MySqlCommand("Update tbName set AvgTime=" + avgTimeArray[2]+ " where PatternId=2", msc);
sc.ExecuteNonQuery();
sc = new MySqlCommand("Update tbName set AvgTime=" + avgTimeArray[3]+ " where PatternId=3", msc);
sc.ExecuteNonQuery();
对于这种类型的查询集是否可以使用循环?如果可能,怎么做?(avgtImeArray是一个数组)
for(int i = 1; i < avgTimeArray.length; i++){
sc = new MySqlCommand("Update tbName set AvgTime = @AvgTime where PatternId = @PatternID", msc);
sc.Parameters.Add(new ObjectParameter("AvgTime", avgTimeArray[i].ToString()));
sc.Parameters.Add(new ObjectParameter("PatternID", i.ToString()));
sc.ExecuteNonQuery();}
这将绕过潜在的SQL注入漏洞。注意,代码是未经测试的。答案基于Tinman7757发布的答案,并根据需要进行调整…
MSDN关于参数化查询的文章:https://msdn.microsoft.com/en-us/library/vstudio/Bb738521(v=VS.100).aspx。不参数化的问题是,它使代码对恶意执行任意SQL代码的人敞开大门(包括但不限于删除和完全删除表)。显然,您需要尽可能地防止这种情况。
for(int i = 0; i < avgTimeArray.length; i++){
sc = new MySqlCommand("Update tbName set AvgTime=" +
avgTimeArray[i]+ " where PatternId=" + i, msc);
sc.ExecuteNonQuery();}
就像Tim Schmelter说的使用循环。'i'表示与arrayAtIndex[0],arrayAtIndex[1].
类似的数组的索引,而不是将其放入循环中,并在其周围使用using语句。并使用arrayAtIndex[i]
如果您需要从更高的索引开始,请使用int i = 1
是的,你可以尝试这样做:
dim x as integer = 1
Do
dim MyAVG as Integer = avgTimeArray[x]
sc = new MySqlCommand("Update tbName set AvgTime=" + MyAvg + " where PatternId=" + x, msc);
sc.ExecuteNonQuery();
x += 1
if x > 3: exit do
Loop