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 是一个数组)
答案 0 :(得分:3)
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文章:Apache Cordova or Phonegap。没有参数化的问题是它为具有恶意意图的人执行任意SQL代码(包括但不限于删除和完整的表丢弃)的代码打开。你会希望尽可能明显地防止这种情况发生。
答案 1 :(得分:0)
是的,您可以尝试以下方式:
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
答案 2 :(得分:0)
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
希望这有一些价值。