2014-05-01 75 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]是我的列表框中的選定項目索引。 –