所以我有這個代碼,旨在刪除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