public DeleteDefinitionState DeleteDefinition(int definitionID) { using (SqlConnection sqlConnection = new SqlConnection(con)) { DeleteDefinitionState state = DeleteDefinitionState.Success; sqlConnection.Open(); SqlCommand command = sqlConnection.CreateCommand(); SqlTransaction transaction = sqlConnection.BeginTransaction("DeleteDescriptor"); command.Connection = sqlConnection; command.Transaction = transaction; try { command.Parameters.AddWithValue("ID", definitionID); command.CommandText = "select count(descriptor_id) from definitions " + "where descriptor_id = (select descriptor_id from definitions where ID = @ID)"; double count = (double)command.ExecuteScalar(); if (count == 1) { command.CommandText = "Delete from Descriptors where id = (select descriptor_id from definitions where ID = @ID); " + "Delete from Ascriptors where descriptor_id = (select descriptor_id from definitions where ID = @ID); "; command.ExecuteNonQuery(); state = DeleteDefinitionState.DeletedWithDescriptor; } command.CommandText = "Delete from DefinitionLinks where definition_id=@definition_id; " + "Delete from Definitions where ID = @definition_id "; command.ExecuteNonQuery(); transaction.Commit(); return(state); } catch (Exception) { try { transaction.Rollback(); } catch (Exception) { } return(DeleteDefinitionState.DataError); } finally { sqlConnection.Close(); } } }
private void DeleteDefinitionButton_Click(object sender, EventArgs e) { DeleteDefinitionState state = db.DeleteDefinition(CheckedItem.definitionId); if (state == DeleteDefinitionState.Success) { MessageBox.Show("Определение удалено"); } else if (state == DeleteDefinitionState.DeletedWithDescriptor) { MessageBox.Show("Определение и соответсвующий термин удалены"); } else { MessageBox.Show("Ошибка подключения к базе данных"); } ShowTermins(searchBox.Text); }