我正在编写一个应用程序来将文本存储到SQL数据库,但是我的代码抛出一个异常,说"变量名@ par1已经被声明了",我不知道如何使这个工作,并希望一些帮助解决这个问题请尽可能请=]
违规代码如下
private void SMSGetter() { try { DecodedShortMessage[] messages = Comm.ReadMessages(PhoneMessageStatus.All, PhoneStorageType.Sim); SqlConnection Conn = new SqlConnection("Data Source=*********;Initial Catalog=********;User ID=**********;Password=***********"); SqlCommand com = new SqlCommand(); com.Connection = Conn; Conn.Open(); foreach (DecodedShortMessage message in messages) { //com.CommandText = ("INSERT INTO SMSArchives(Message,Blacklist) VALUES ('" + message.Data.UserDataText + "', 'Yes')"); //com.ExecuteNonQuery(); com.CommandText = ("INSERT INTO SMSArchives(Message,Blacklist) VALUES (@par1,@par2)"); com.Parameters.AddWithValue("@par1", message.Data.UserDataText); com.Parameters.AddWithValue("@par2", "Yes"); com.ExecuteNonQuery(); } Conn.Close(); } catch (Exception ex) { Log(ex.ToString()); } }
Marc Gravell.. 6
您对每次迭代使用相同的命令,但每次都添加参数.试着打电话
com.Parameters.Clear();
在每次循环迭代结束时.您还可以预先创建参数,并设置.Value
每次迭代 - 可能稍微快一些.
另外:修复SQL注入漏洞:)
您对每次迭代使用相同的命令,但每次都添加参数.试着打电话
com.Parameters.Clear();
在每次循环迭代结束时.您还可以预先创建参数,并设置.Value
每次迭代 - 可能稍微快一些.
另外:修复SQL注入漏洞:)