所以我有这个代码,旨在删除mySQL服务器数据库中的行判断我的列表框中选择什么。这里是我必须删除行的代码:SQL行没有被删除
private void remove_btn_Click(object sender, EventArgs e)
{
try
{
if (Calls_lsb.SelectedItem == null)
MessageBox.Show("Please select an item for deletion.");
}
else
{
int i = Calls_lsb.SelectedIndex;
if (i > 0)
{
SqlConnection connection = new SqlConnection(//My Connection String);
string sqlStatement1 = "DELETE FROM Records WHERE CallID = @Id";
string sqlStatement2 = "DELETE FROM Calls WHERE CallID = @Id";
connection.Open();
SqlCommand cmd1 = new SqlCommand(sqlStatement1, connection);
cmd1.Parameters.AddWithValue("@Id", Calls_lsb.Items[i]);
cmd1.ExecuteNonQuery();
SqlCommand cmd2 = new SqlCommand(sqlStatement2, connection);
cmd2.Parameters.AddWithValue("@Id", Calls_lsb.Items[i]);
cmd2.ExecuteNonQuery();
connection.Close();
Calls_lsb.Items.Remove(Calls_lsb.Items[i]);
}
else
{
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
我没有得到任何例外,我有类似的代码,添加记录工作正常。我尝试着进入代码,但一切似乎都很好。它只是不会从数据库中删除行。它从列表中删除正确的项目,而不是数据库。
如果任何人都可以对这种情况有所了解,那很好,谢谢!
编辑:好的,我似乎已经解决了这个问题。我只是删除了整个i =选择的索引,并用'(Calls_lsb.SelectedIndex + 1)'替换了'Calls_lsb.Items [i]'。我真的不明白为什么当我试图给我加1时发生异常,因为这基本上是在做同样的事情。
什么是'Calls_lsb.Items [I]'准确的价值?你确定你的连接字符串是正确的吗?你是否在你的sql server管理工作室中尝试了'DELETE'语句?它在其中起作用了吗? –
好点,我刚刚测试了SQL上的查询,它工作。我再次跨过,似乎我是0这是不相关的,我的CallID是1.我搞砸了一下试图将1添加到索引,但我得到一个ArgumentOutOfRangeException说'1'的参数值是不是指数的价值。有任何想法吗? –
Calls_lsb.Items中有多少项目?如果你只有一个项目,它将有一个索引0,因为它基于0。 – sr28