2014-05-01 70 views
0

所以我有这个代码,旨在删除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时发生异常,因为这基本上是在做同样的事情。

+2

什么是'Calls_lsb.Items [I]'准确的价值?你确定你的连接字符串是正确的吗?你是否在你的sql server管理工作室中尝试了'DELETE'语句?它在其中起作用了吗? –

+0

好点,我刚刚测试了SQL上的查询,它工作。我再次跨过,似乎我是0这是不相关的,我的CallID是1.我搞砸了一下试图将1添加到索引,但我得到一个ArgumentOutOfRangeException说'1'的参数值是不是指数的价值。有任何想法吗? –

+0

Calls_lsb.Items中有多少项目?如果你只有一个项目,它将有一个索引0,因为它基于0。 – sr28

回答

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]); 

//与

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

添加'.Value'会给我一个错误,而不是我的智能感知的一部分:''object'不包含'Value'的定义。 –

+0

你能帮我理解“Calls_lsb.Items [i]”什么是Calls_lsb,我猜它是DropDownList的对象?正确? – Harikant

+0

Calls_lsb.Items [i]是我的列表框中的选定项目索引。 –