SQL行未被删除

时间:2014-05-01 09:55:38

标签: c# mysql sql sql-server sql-delete

所以我有这个代码用于删除mySQL服务器数据库中的一行,从我的列表框中选择的内容来判断。这是我要删除行的代码:

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]'。我真的不明白为什么当我尝试向i添加1时我得到一个例外,因为这基本上是做同样的事情。

1 个答案:

答案 0 :(得分:0)

替换下面的代码。

  cmd1.Parameters.AddWithValue("@Id", Calls_lsb.Items[i]);
  //with 
  cmd1.Parameters.AddWithValue("@Id", Calls_lsb.Items[i].Value);

  cmd2.Parameters.AddWithValue("@Id", Calls_lsb.Items[i]);

// with

  cmd2.Parameters.AddWithValue("@Id", Calls_lsb.Items[i].Value);