在这段代码中,我有一个按钮点击事件.每当我第一次点击按钮时,代码都能正常工作.但是,如果我在其他时间单击该按钮则会抛出错误.
我的代码是
private void button2_Click(object sender, EventArgs e)
{
string itemname = comboBox1.SelectedItem.ToString();
con.Open();
command.CommandText = "DELETE FROM pricedata WHERE Item=@item";
command.Connection = con;
command.Parameters.AddWithValue("@item", itemname);
command.ExecuteNonQuery();
con.Close();
}
Run Code Online (Sandbox Code Playgroud)
看起来你试图@item第二次将你的参数添加到你的命令,这就是你得到错误的原因;
嘿! 您的命令已经有了这个命名参数.您无法在命令中添加相同的命名参数.那毫无意义.
.Clear()例如,在执行命令之前,可以使用方法清除命令的参数.
command.Parameters.Clear();
command.Parameters.AddWithValue("@item", itemname);
Run Code Online (Sandbox Code Playgroud)
当然,不要使用AddWithValue方法.它可能有时会产生意外结果.使用.Add()重载指定参数类型和大小.最好使用using语句来自动调度SqlCeConnection和SqlCeCommand自动调用而不是手动调用Close或Dispose方法.并且本地连接总是更可取的.最好尽可能靠近它们的使用来打开和关闭连接.ADO.NET将进行连接池,因此这根本不会很昂贵.
private void button2_Click(object sender, EventArgs e)
{
using(var con = new SqlCeConnection(conString))
using(var command = con.CreateCommand())
{
command.CommandText = "DELETE FROM pricedata WHERE Item = @item";
command.Parameters.Clear();
command.Parameters.AddWithValue("@item", comboBox1.SelectedItem.ToString());
con.Open();
command.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
683 次 |
| 最近记录: |