그래서이 코드는 내 목록 상자에서 선택된 것으로 판단하여 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.Items [i]'를 '(Calls_lsb.SelectedIndex + 1)'로 바꿉니다. 나는 기본적으로 같은 것을하고 있기 때문에 1을 i에 추가하려고했을 때 왜 예외가 발생하는지 이해하지 못한다.
십니까? 연결 문자열이 맞습니까? SQL 서버 관리 스튜디오에서'DELETE' 문을 시도 했습니까? 그것에서 효과가 있습니까? –
좋은 지적, 나는 단지 SQL에 대한 쿼리를 테스트하고 효과가 있었다. 내가 다시 밟은 그리고 그것은 내가 0 인 것 같습니다 내 CallID 1입니다 상관 관계가 있습니다. 나는 인덱스에 1을 추가하려고 조금 주위를 망쳐 봤지만 인수 값이 '1'이라는 ArgumentOutOfRangeException이 있습니다. 인덱스 값이 아닙니다. 어떤 아이디어? –
Calls_lsb.Items에 몇 개의 항목이 있습니까? 1 개의 항목 만있는 경우 0을 기준으로 인덱스가 0이됩니다. – sr28